PageSourceSearch

https://www.examai.ai/login

html examai.ai collected 2026-10-01 23:53:53 UTC 20,492 bytes, 410 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5  <meta charset="UTF-8" />
6  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7  
7<script>
8    (function() {
9      try {
10        let savedMode = localStorage.getItem('themeMode') || 'dark';
11        // Enterprise portal: the admin's org theme wins over the personal one.
12        // EnterpriseThemeScope caches the last-known org mode here as JSON
13        // { email, mode }; honor it so a light org doesn't flash dark on reload.
14        // Exact-path test on purpose: /enterprise-onboarding etc. are public dark pages.
15        if (location.pathname === '/enterprise' || location.pathname.indexOf('/enterprise/') === 0 || location.pathname === '/mcp') {
16          try {
17            const cached = JSON.parse(localStorage.getItem('examai_enterprise_theme_mode') || 'null');
18            if (cached && (cached.mode === 'light' || cached.mode === 'dark')) {
19              savedMode = cached.mode;
20            }
21          } catch (e) { /* malformed cache — fall back to the personal mode */ }
22        }
23        // The homepage (/, src/pages/landing3, pinned light in App.tsx) is a light-only marketing page,
24        // /landing3 is its old test URL (now a redirect to /), and /institutions and
25        // /enterprise-pricing-calculator were rebuilt in the same landing3 light system
26        // (.claude/plans/landing3-subpages.md): paint them all light before React mounts so no visitor
27        // ever sees a dark first frame.
28        if (
29          location.pathname === '/' ||
30          location.pathname === '/landing3' || location.pathname === '/landing3/' ||
31          location.pathname === '/institutions' || location.pathname === '/institutions/' ||
32          location.pathname === '/enterprise-pricing-calculator' || location.pathname === '/enterprise-pricing-calculator/'
33        ) {
34          savedMode = 'light';
35        }
36        if (savedMode === 'dark') {
37          document.documentElement.classList.add('dark');
38          document.documentElement.classList.add('dark-theme');
39        } else {
40          document.documentElement.classList.remove('dark');
41          document.documentElement.classList.add('light-theme');
42        }
43        const savedTheme = localStorage.getItem('appTheme') || 'purple';
44        document.documentElement.setAttribute('data-theme', savedTheme);
45      } catch (e) {
46        document.documentElement.classList.add('dark');
47        document.documentElement.classList.add('dark-theme');
48      }
49    })();
50  </script>
50
51  
51<script>
52    // Country market (.claude/plans/country-markets-localization.md §3.1): start the same-origin Cloudflare
53    // IP-country lookup now, so it has usually finished by the time the bundle asks. The promise is consumed
54    // (and deleted) by fetchTrace in src/services/marketService.ts; the rules live in src/config/marketResolve.ts.
55    // Skipped when the answer is already known: local/preview hosts, an explicit or ?market= choice, or a
56    // detection cached less than 24 h ago.
57    (function () {
58      try {
59        if (/localhost|127\.0\.0\.1|\[::1\]|lovable(project)?\.(app|com)/.test(location.hostname)) return;
60        if (localStorage.getItem('examai_market') || sessionStorage.getItem('examai_market_session')) return;
61        if (/[?&](market|country)=/i.test(location.search)) return;
62        try {
63          var cached = JSON.parse(localStorage.getItem('examai_market_detected') || 'null');
64          var age = cached && typeof cached === 'object' && typeof cached.at === 'number' ? Date.now() - cached.at : -1;
65          if (age >= 0 && age < 86400000) return;
66        } catch (e) { /* malformed cache: the resolver removes it; look up again */ }
67        window.__EXAMAI_TRACE__ = fetch('/cdn-cgi/trace', { cache: 'no-store', credentials: 'omit' })
68          .then(function (r) { return r.ok ? r.text() : ''; })
69          .catch(function () { return ''; });
70      } catch (e) { /* storage or fetch unavailable: the resolver falls back on its own */ }
71    })();
72  </script>
72
73
74  <!-- Clickjacking protection: break out of any iframe on a different origin -->
75  <style id="anti-clickjack">body { display: none !important; }</style>
76  
76<script>
77    (function () {
78      function reveal() {
79        var el = document.getElementById('anti-clickjack');
80        if (el && el.parentNode) el.parentNode.removeChild(el);
81      }
82
83      // Allow embedding in Lovable's preview/editor and known dev hosts
84      var ALLOWED_PARENT_HOSTS = [
85        'lovable.dev',
86        'lovableproject.com',
87        'lovable.app',
88        'localhost',
89        '127.0.0.1'
90      ];
91
92      function parentIsAllowed() {
93        try {
94          var ref = document.referrer ? new URL(document.referrer).hostname : '';
95          if (!ref) return false;
96          return ALLOWED_PARENT_HOSTS.some(function (h) {
97            return ref === h || ref.endsWith('.' + h);
98          });
99        } catch (e) {
100          return false;
101        }
102      }
103
104      if (window.self === window.top) {
105        reveal();
106        return;
107      }
108
109      if (parentIsAllowed()) {
110        // Trusted embedder (Lovable preview/editor) — show the page
111        reveal();
112        return;
113      }
114
115      // Untrusted embedder — try to break out, but never leave the page hidden
116      try {
117        window.top.location = window.self.location;
118      } catch (e) {
119        reveal();
120      }
121    })();
122  </script>
122
123  <!-- Market-neutral on purpose (.claude/plans/country-markets-localization.md §3.7, OPEN-5): link-preview
124       bots and non-JS crawlers in every country read this static head; the per-market title, description
125       and keywords are set at runtime by SEOHead (src/pages/landing3/Landing3.tsx). -->
126  <title>ExamAI - The LMS with AI marking for universities and schools</title>
127  <meta name="description"
128    content="One LMS for your whole institution: courses, lessons, online exams, results and diplomas, with AI that marks every script, handwritten or online. Free pilots, sponsored by Google Cloud.">
129  <meta name="keywords"
130    content="LMS for universities and schools, LMS for institutions, AI grading software, grade handwritten exams with AI, online exam software, AI exam generator from lecture notes, rubric grading software, Gradescope alternative, Canvas alternative, CBT software Nigeria, NUC CCMAS course guides, on-screen evaluation system, LMS for colleges in India, corrección automática de exámenes con IA, campus virtual para universidades, plataforma para calificar exámenes con IA, correção de provas com IA, correction automatique des copies, AI marking software Australia, online exam software South Africa, LMS for universities in Ghana, OBE LMS Philippines, OBE LMS Malaysia, diploma verification" />
131  <meta name="author" content="ExamAI" />
132  <meta name="robots" content="index, follow" />
133
134  <!-- Material Symbols Rounded for icons -->
135  <link rel="stylesheet"
136    href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,[email protected],100..700,0..1,-50..200&display=block" />
137  <!-- Nunito font for the logo text -->
138  <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@700&display=swap" rel="stylesheet">
139  <style>
140    .material-symbols-rounded {
141      font-variation-settings:
142        'FILL' 1,
143        'wght' 400,
144        'GRAD' 0,
145        'opsz' 48
146    }
147
148    /* Add Nunito font for the logo text */
149    .font-nunito {
150      font-family: 'Nunito', sans-serif;
151    }
152  </style>
153
154  <!-- MediaPipe libraries for webcam face tracking (loaded from CDN to avoid bundler issues) -->
155  
155<script src="https://cdn.jsdelivr.net/npm/@mediapipe/camera_utils/camera_utils.js" crossorigin="anonymous"></script>
155
156  
156<script src="https://cdn.jsdelivr.net/npm/@mediapipe/drawing_utils/drawing_utils.js" crossorigin="anonymous"></script>
156
157  
157<script src="https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh/face_mesh.js" crossorigin="anonymous"></script>
157
158
159  <!-- Canonical URL: managed dynamically by SEOHead component per page -->
160  <!-- Open Graph / Facebook -->
161  <meta property="og:type" content="website" />
162  <!-- Absolute URL: link-preview bots (WhatsApp, LinkedIn, Slack, Googlebot's non-JS pass) read the
163       static HTML and never resolve a relative image URL against the page origin themselves. -->
164  <meta property="og:url" content="https://www.examai.ai/">
165  <meta property="og:image" content="https://www.examai.ai/landing3-assets/og-examai-neutral.png">
166  <meta property="og:site_name" content="ExamAI" />
167
168  <!-- Twitter -->
169  <meta name="twitter:card" content="summary_large_image" />
170
171
172  <meta name="twitter:image" content="https://www.examai.ai/landing3-assets/og-examai-neutral.png">
173  <meta name="twitter:site" content="@examai" />
174
175  <link rel="icon" type="image/png" href="/lovable-uploads/6010b777-e74f-4d1f-8cb5-931cc92bfd7a.png">
176
177  <!-- Allow autoplay for embedded media -->
178  <meta http-equiv="Feature-Policy" content="autoplay 'self' https://www.youtube.com">
179
180  <!-- Structured Data - Organization -->
181  
181<script type="application/ld+json">
182      {
183        "@context": "https://schema.org",
184        "@type": "Organization",
185        "name": "ExamAI",
186        "legalName": "ExamAI, Inc.",
187        "url": "https://www.examai.ai",
188        "logo": "https://www.examai.ai/lovable-uploads/6010b777-e74f-4d1f-8cb5-931cc92bfd7a.png",
189        "description": "One LMS for institutions: courses, lessons, online exams, results and diplomas, with AI that marks every script. Built in Silicon Valley (a UC Berkeley SkyDeck company). Institutions pay per student; the LMS comes included.",
190        "areaServed": ["United States", "Nigeria", "Spain", "Equatorial Guinea", "India", "Ghana", "South Africa", "Egypt", "Morocco", "United Arab Emirates", "Mexico", "Brazil", "Philippines", "Malaysia", "Australia"],
191        "sameAs": [
192          "https://twitter.com/examai",
193          "https://www.linkedin.com/company/examai"
194        ]
195      }
196    </script>
196
197
198  <!-- Structured Data - WebSite -->
199  
199<script type="application/ld+json">
200      {
201        "@context": "https://schema.org",
202        "@type": "WebSite",
203        "name": "ExamAI",
204        "url": "https://www.examai.ai",
205        "potentialAction": {
206          "@type": "SearchAction",
207          "target": {
208            "@type": "EntryPoint",
209            "urlTemplate": "https://www.examai.ai/blogs?search={search_term_string}"
210          },
211          "query-input": "required name=search_term_string"
212        }
213      }
214    </script>
214
215
216  <!-- Structured Data - SoftwareApplication -->
217  
217<script type="application/ld+json">
218      {
219        "@context": "https://schema.org",
220        "@type": "SoftwareApplication",
221        "name": "ExamAI",
222        "applicationCategory": "EducationalApplication",
223        "operatingSystem": "Web, iOS, Android",
224        "description": "One LMS for your whole institution: courses, lessons, online exams, results and diplomas, with AI that marks every script, handwritten or online."
225      }
226    </script>
226
227
228  <!-- Structured Data - SiteNavigationElement (helps Google generate sitelinks) -->
229  <!-- B2B pivot 2026-08: JSON can't hold comments, so noting the change here.
230       "Features" entry url changed from https://www.examai.ai/features to https://www.examai.ai/features/enterprise.
231       "Pricing" entry url changed from https://www.examai.ai/pricing to https://www.examai.ai/enterprise-pricing-calculator.
232       Restore by reverting these two url values. -->
233  
233<script type="application/ld+json">
234      {
235        "@context": "https://schema.org",
236        "@type": "ItemList",
237        "itemListElement": [
238          {
239            "@type": "SiteNavigationElement",
240            "position": 1,
241            "name": "Features",
242            "description": "AI-powered exam creation, grading, and analytics features",
243            "url": "https://www.examai.ai/features/enterprise"
244          },
245          {
246            "@type": "SiteNavigationElement",
247            "position": 2,
248            "name": "Pricing",
249            "description": "Flexible pricing plans for educators and institutions",
250            "url": "https://www.examai.ai/enterprise-pricing-calculator"
251          },
252          {
253            "@type": "SiteNavigationElement",
254            "position": 3,
255            "name": "How It Works",
256            "description": "Step-by-step guide to creating and grading exams with AI",
257            "url": "https://www.examai.ai/how-it-works"
258          },
259          {
260            "@type": "SiteNavigationElement",
261            "position": 4,
262            "name": "Help Center",
263            "description": "FAQs and support for ExamAI users",
264            "url": "https://www.examai.ai/help"
265          },
266          {
267            "@type": "SiteNavigationElement",
268            "position": 5,
269            "name": "Blog",
270            "description": "Education technology insights, tips, and updates",
271            "url": "https://www.examai.ai/blogs"
272          },
273          {
274            "@type": "SiteNavigationElement",
275            "position": 6,
276            "name": "About",
277            "description": "Learn about ExamAI's mission to transform education",
278            "url": "https://www.examai.ai/about"
279          },
280          {
281            "@type": "SiteNavigationElement",
282            "position": 7,
283            "name": "Contact",
284            "description": "Get in touch with the ExamAI team",
285            "url": "https://www.examai.ai/contact"
286          },
287          {
288            "@type": "SiteNavigationElement",
289            "position": 8,
290            "name": "For Institutions",
291            "description": "Bring ExamAI to your university, school, or educational organization",
292            "url": "https://www.examai.ai/institutions"
293          },
294          {
295            "@type": "SiteNavigationElement",
296            "position": 9,
297            "name": "Login",
298            "description": "Access your ExamAI account",
299            "url": "https://www.examai.ai/login"
300          }
301        ]
302      }
303    </script>
303
304
305  <!-- Microsoft Clarity Analytics -->
306  
306<script type="text/javascript">
307    (function (c, l, a, r, i, t, y) {
308      c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) };
309      t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i;
310      y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);
311    })(window, document, "clarity", "script", "pqfa88igg8");
312  </script>
312
313
314  <!-- Apollo.io Website Tracker (production only) -->
315  
315<script>if (window.location.hostname !== 'localhost') {
316      function initApollo() {
317        var n = Math.random().toString(36).substring(7), o = document.createElement("script");
318        o.src = "https://assets.apollo.io/micro/website-tracker/tracker.iife.js?nocache=" + n, o.async = !0, o.defer = !0,
319          o.onload = function () { window.trackingFunctions.onLoad({ appId: "67acfa208329d80019d3c940" }) },
320          document.head.appendChild(o)
321      } initApollo();
322    }</script>
322
323  <meta property="og:title" content="ExamAI - The LMS with AI marking for universities and schools">
324  <meta name="twitter:title" content="ExamAI - The LMS with AI marking for universities and schools">
325  <meta property="og:description"
326    content="One LMS for your whole institution: courses, lessons, online exams, results and diplomas, with AI that marks every script, handwritten or online. Free pilots, sponsored by Google Cloud.">
327  <meta name="twitter:description"
328    content="One LMS for your whole institution: courses, lessons, online exams, results and diplomas, with AI that marks every script, handwritten or online. Free pilots, sponsored by Google Cloud.">
329
330  <!-- NOTE: hreflang tags were removed. Spanish blog posts are standalone content,
331       not translations of English pages. Having static hreflang in index.html caused
332       Google to flag them as "Duplicate without user-selected canonical" because
333       every page incorrectly claimed them as alternates. Language is now set
334       per-post via BlogSEO structured data inLanguage field. -->
335  
335<script type="module" crossorigin src="/assets/index-gqjR-I5d.js"></script>
335
336  <link rel="stylesheet" crossorigin href="/assets/index-BCkOngyS.css">
337<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
337</head>
338
339<body>
340  <div id="root"></div>
341  <noscript>
342    <div style="padding: 40px; font-family: sans-serif; background: #0f1118; color: white; min-height: 100vh;">
343      <h1>ExamAI - The LMS that marks every script</h1>
344      <p>Courses, lessons, online exams, results and diplomas for your whole institution, with AI that marks every
345        script, handwritten or online, and writes tests from your notes.</p>
346      <nav>
347        <h2>Main Pages</h2>
348        <ul>
349          <!-- B2B pivot 2026-08 — restore by removing this comment wrapper:
350          <li><a href="https://www.examai.ai/features">Features</a></li>
351          <li><a href="https://www.examai.ai/features/professors">For Professors</a></li>
352          <li><a href="https://www.examai.ai/features/students">For Students</a></li>
353          -->
354          <li><a href="https://www.examai.ai/features/enterprise">For Enterprise</a></li>
355          <!-- B2B pivot 2026-08 — restore by removing this comment wrapper:
356          <li><a href="https://www.examai.ai/pricing">Pricing</a></li>
357          -->
358          <li><a href="https://www.examai.ai/enterprise-pricing-calculator">Enterprise Pricing Calculator</a></li>
359          <li><a href="https://www.examai.ai/institutions">For Institutions</a></li>
360          <li><a href="https://www.examai.ai/how-it-works">How It Works</a></li>
361          <li><a href="https://www.examai.ai/about">About</a></li>
362          <li><a href="https://www.examai.ai/contact">Contact</a></li>
363          <li><a href="https://www.examai.ai/help">Help Center</a></li>
364          <li><a href="https://www.examai.ai/hiring">Careers</a></li>
365          <!-- B2B pivot 2026-08 — /signup now redirects to /institutions. Restore by uncommenting:
366          <li><a href="https://www.examai.ai/signup">Sign Up</a></li>
367          -->
368          <li><a href="https://www.examai.ai/institutions">For Institutions</a></li>
369          <li><a href="https://www.examai.ai/login">Login</a></li>
370        </ul>
371        <h2>Blog</h2>
372        <ul>
373          <li><a href="https://www.examai.ai/blogs">All Articles</a></li>
374          <li><a href="https://www.examai.ai/blogs/can-chatgpt-grade-exams-what-happens">Can ChatGPT Grade Exams?</a>
375          </li>
376          <li><a href="https://www.examai.ai/blogs/best-ai-grading-tools-teachers-2026">Best AI Grading Tools 2026</a>
377          </li>
378          <li><a href="https://www.examai.ai/blogs/grade-200-exams-under-2-hours">Grade 200 Exams in Under 2 Hours</a>
379          </li>
380          <li><a href="https://www.examai.ai/blogs/chatgpt-vs-ai-grading-tools-comparison">ChatGPT vs AI Grading
381              Tools</a></li>
382          <li><a href="https://www.examai.ai/blogs/create-ai-generated-exam-5-minutes-tutorial">Create AI Exam in 5
383              Minutes</a></li>
384        </ul>
385        <h2>Comparisons</h2>
386        <ul>
387          <li><a href="https://www.examai.ai/compare">Compare AI Grading Tools</a></li>
388          <li><a href="https://www.examai.ai/compare/examai-vs-chatgpt">ExamAI vs ChatGPT</a></li>
389          <li><a href="https://www.examai.ai/compare/examai-vs-gradescope">ExamAI vs Gradescope</a></li>
390          <li><a href="https://www.examai.ai/compare/examai-vs-gemini">ExamAI vs Gemini</a></li>
391          <li><a href="https://www.examai.ai/compare/best-ai-grading-tools">Best AI Grading Tools</a></li>
392        </ul>
393        <h2>Use Cases</h2>
394        <ul>
395          <li><a href="https://www.examai.ai/use-cases">All Use Cases</a></li>
396          <li><a href="https://www.examai.ai/use-cases/ai-grading-for-essays">AI Grading for Essays</a></li>
397          <li><a href="https://www.examai.ai/use-cases/ai-grading-for-math">AI Grading for Math</a></li>
398          <li><a href="https://www.examai.ai/use-cases/ai-grading-handwritten-exams">AI Grading Handwritten Exams</a>
399          </li>
400          <li><a href="https://www.examai.ai/use-cases/ai-exam-generator">AI Exam Generator</a></li>
401          <li><a href="https://www.examai.ai/use-cases/ai-grading-for-universities">AI Grading for Universities</a></li>
402        </ul>
403      </nav>
404    </div>
405  </noscript>
406  <!-- IMPORTANT: DO NOT REMOVE THIS SCRIPT TAG OR THIS VERY COMMENT!
407    
407<script src="https://cdn.gpteng.co/gptengineer.js" type="module"></script>
407 -->
408</body>
409
410</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.