PageSourceSearch

https://resume-ai-ruby.vercel.app/upload

html resume-ai-ruby.vercel.app collected 2026-10-03 07:37:30 UTC 8,008 bytes, 91 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.png"/><link rel="preload" as="image" href="/icons/info.svg"/><link rel="preload" as="image" href="/footer/coko AGENCY favicon.png"/><link rel="modulepreload" href="/assets/entry.client-DQFzWzMJ.js"/><link rel="modulepreload" href="/assets/chunk-QMGIS6GS-DX0VMMAr.js"/><link rel="modulepreload" href="/assets/root-D2-SHmKp.js"/><link rel="modulepreload" href="/assets/puter-DiQITKgP.js"/><link rel="modulepreload" href="/assets/upload-DfIjBdyV.js"/><link rel="modulepreload" href="/assets/Navbar-B4kd3xnb.js"/><link rel="modulepreload" href="/assets/Footer-DN9olhLE.js"/><link rel="modulepreload" href="/assets/utils-CLdLQqWL.js"/><link rel="icon" href="/images/logo.png" type="image/png"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="/assets/root-Caq_XoXg.css"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&amp;display=swap"/></head><body>
1<script src="https://js.puter.com/v2/"></script>
1<main class="bg-gradient-to-br from-cyan-50 via-teal-50 to-emerald-50 dark:from-slate-950 dark:via-slate-900 dark:to-cyan-950 bg-cover min-h-screen transition-colors"><nav class="navbar"><a class="flex items-center gap-2 sm:gap-3" href="/" data-discover="true"><img src="/images/logo.png" alt="ResumeAI Logo" class="h-8 w-auto sm:h-10"/><p class="text-xl sm:text-2xl md:text-3xl font-bold text-gradient logo-font">ResumeAI</p></a><div class="flex items-center gap-2 sm:gap-4"><a class="primary-button w-fit text-sm sm:text-base px-3 sm:px-4 py-2" href="/upload" data-discover="true"><span class="hidden sm:inline">Upload Resume</span><span class="sm:hidden">Upload</span></a></div></nav><section class="main-section"><div class="page-heading py-8 sm:py-12 md:py-16"><h1>Smart feedback for your dream job</h1><h2>Drop your resume for an ATS score and improvement tips</h2><form id="upload-form" class="flex flex-col gap-4 sm:gap-6 mt-6 sm:mt-8 w-full max-w-2xl"><div class="form-div"><label for="company-name">Company Name</label><input type="text" placeholder="Company Name" id="company-name" name="company-name"/></div><div class="form-div"><label for="job-title">Job Title</label><input type="text" placeholder="Job Title" id="job-title" name="job-title"/></div><div class="form-div"><label for="job-description">Job Description</label><textarea rows="5" name="job-description" placeholder="Job Description" id="job-description"></textarea></div><div class="form-div"><label for="uploader">Upload Resume</label><div class="w-full gradient-border"><div role="presentation" tabindex="0"><input accept="application/pdf,.pdf" type="file" style="border:0;clip:rect(0, 0, 0, 0);clip-path:inset(50%);height:1px;margin:0 -1px -1px 0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap" tabindex="-1"/><div class="space-y-4 cursor-pointer"><div><div class="mx-auto w-12 h-12 sm:w-16 sm:h-16 flex items-center justify-center mb-2"><img src="/icons/info.svg" alt="upload" class="w-12 h-12 sm:w-20 sm:h-20"/></div><p class="text-base sm:text-lg text-gray-500 dark:text-slate-300"><span class="font-semibold">Click to upload</span> or drag and drop</p><p class="text-base sm:text-lg text-gray-500 dark:text-slate-300">PDF (max <!-- -->20 MB<!-- -->)</p></div></div></div></div></div><button class="primary-button" type="submit">Analyze Resume</button></form></div></section><footer class="w-full py-6 sm:py-8 px-4 mt-12 sm:mt-16 md:mt-20 flex items-center justify-center border-t border-gray-200 dark:border-slate-800 bg-white dark:bg-slate-900 transition-colors"><div class="flex flex-col items-center gap-3 sm:gap-4"><p class="text-xs sm:text-sm text-gray-600 dark:text-slate-400 text-center">© <!-- -->2026<!-- --> ResumeAI. All rights reserved.</p><a href="https://cokoagency.com" target="_blank" rel="noopener noreferrer" class="inline-flex items-center space-x-2 bg-black border border-white rounded-full hover:bg-gray-800 transition-colors duration-300 px-3 py-1.5 "><span class="text-gray-300 font-medium text-xs">Powered by Coko</span><div class="w-4 h-4 bg-white rounded-full flex items-center justify-center"><img src="/footer/coko AGENCY favicon.png" alt="Coko Agency" class="w-3 h-3"/></div></a></div></footer></main>
1<script>((storageKey2, restoreKey) => {
2    if (!window.history.state || !window.history.state.key) {
3      let key = Math.random().toString(32).slice(2);
4      window.history.replaceState({ key }, "");
5    }
6    try {
7      let positions = JSON.parse(sessionStorage.getItem(storageKey2) || "{}");
8      let storedY = positions[restoreKey || window.history.state.key];
9      if (typeof storedY === "number") {
10        window.scrollTo(0, storedY);
11      }
12    } catch (error) {
13      console.error(error);
14      sessionStorage.removeItem(storageKey2);
15    }
16  })("react-router-scroll-positions", null)</script>
16<script>window.__reactRouterContext = {"basename":"/","future":{"unstable_middleware":false,"unstable_optimizeDeps":false,"unstable_splitRouteModules":false,"unstable_subResourceIntegrity":false,"unstable_viteEnvironmentApi":false},"routeDiscovery":{"mode":"lazy","manifestPath":"/__manifest"},"ssr":true,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script>
16<script type="module" async="">;
17import * as route0 from "/assets/root-D2-SHmKp.js";
18import * as route1 from "/assets/upload-DfIjBdyV.js";
19  window.__reactRouterManifest = {
20  "entry": {
21    "module": "/assets/entry.client-DQFzWzMJ.js",
22    "imports": [
23      "/assets/chunk-QMGIS6GS-DX0VMMAr.js"
24    ],
25    "css": []
26  },
27  "routes": {
28    "root": {
29      "id": "root",
30      "path": "",
31      "hasAction": false,
32      "hasLoader": false,
33      "hasClientAction": false,
34      "hasClientLoader": false,
35      "hasClientMiddleware": false,
36      "hasErrorBoundary": true,
37      "module": "/assets/root-D2-SHmKp.js",
38      "imports": [
39        "/assets/chunk-QMGIS6GS-DX0VMMAr.js",
40        "/assets/puter-DiQITKgP.js"
41      ],
42      "css": [
43        "/assets/root-Caq_XoXg.css"
44      ]
45    },
46    "routes/upload": {
47      "id": "routes/upload",
48      "parentId": "root",
49      "path": "/upload",
50      "hasAction": false,
51      "hasLoader": false,
52      "hasClientAction": false,
53      "hasClientLoader": false,
54      "hasClientMiddleware": false,
55      "hasErrorBoundary": false,
56      "module": "/assets/upload-DfIjBdyV.js",
57      "imports": [
58        "/assets/chunk-QMGIS6GS-DX0VMMAr.js",
59        "/assets/Navbar-B4kd3xnb.js",
60        "/assets/Footer-DN9olhLE.js",
61        "/assets/utils-CLdLQqWL.js",
62        "/assets/puter-DiQITKgP.js"
63      ],
64      "css": []
65    },
66    "routes/home": {
67      "id": "routes/home",
68      "parentId": "root",
69      "index": true,
70      "hasAction": false,
71      "hasLoader": false,
72      "hasClientAction": false,
73      "hasClientLoader": false,
74      "hasClientMiddleware": false,
75      "hasErrorBoundary": false,
76      "module": "/assets/home-BP5yjhtA.js",
77      "imports": [
78        "/assets/chunk-QMGIS6GS-DX0VMMAr.js",
79        "/assets/Navbar-B4kd3xnb.js",
80        "/assets/Footer-DN9olhLE.js",
81        "/assets/puter-DiQITKgP.js"
82      ],
83      "css": []
84    }
85  },
86  "url": "/assets/manifest-4cf06800.js",
87  "version": "4cf06800"
88};
89  window.__reactRouterRouteModules = {"root":route0,"routes/upload":route1};
90
91import("/assets/entry.client-DQFzWzMJ.js");</script>
91<!--$-->
91<script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script>
91<!--$-->
91<script>window.__reactRouterContext.streamController.close();</script>
91<!--/$--><!--/$--></body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.