Sub-processors
Last updated: May 2, 2026
JobMason uses the third-party sub-processors below to deliver the Service. Each is bound by a written data-processing agreement and processes personal data on our instructions only. We will update this page and notify subscribed customers before adding a new sub-processor that processes personal data. For more on how data flows between us and these providers, see our Privacy Policy.
| Provider | Purpose | Region | Data processed |
|---|---|---|---|
| Vercel AI Gateway | Routes AI generation and extraction requests to the model providers below | United States | Candidate profile fields, job descriptions, and generation prompts/outputs in transit to the selected model provider |
| Google (Gemini) | Primary AI model for resumes, cover letters, emails, Q&A answers, and profile/job structuring | United States (Google Cloud) | Candidate profile fields and job descriptions you submit for generation or extraction |
| OpenAI | Content moderation on user-submitted text; fallback AI generation when the primary model is unavailable | United States | Moderation: text snippets you submit. Generation fallback (via Vercel AI Gateway): candidate profile fields and job descriptions. Not used for foundation-model training under the OpenAI API data-use policy. |
| Xiaomi (MiMo) | Fallback AI generation when primary and secondary models are unavailable | China (via Vercel AI Gateway routing) | Candidate profile fields and job descriptions submitted for generation |
| Apify | LinkedIn job-posting scraping when you submit a LinkedIn job URL | European Union (Czech Republic) | LinkedIn job URL; returned job title, company, and description from the public listing |
| Exa | Fetches public page text when you import a profile from a LinkedIn profile URL | United States | LinkedIn profile URL; public page text retrieved from that URL (professional history visible on the page) |
| Firecrawl | Server-side scraping of public job-posting URLs you submit (non-LinkedIn listings) | United States | Job-posting URL and public page content retrieved from that URL (job titles, descriptions). LinkedIn job URLs are handled by Apify instead. No candidate profile data is sent directly. |
| PostHog | Product analytics, funnel events, and error/exception tracking | United States | Usage events, pseudonymous user identifier, email and name on sign-in, IP address, device/browser metadata, and exception payloads |
| Polar | Subscription billing, payment processing, and customer-portal functionality | United States | Email, billing/payment metadata, customer + subscription identifiers |
| Resend | Transactional email (verification, password reset, system notifications) | United States | Recipient email address, message contents, delivery metadata |
| Neon | Managed PostgreSQL database (primary data store) | United States, EU on request | All primary application data - user, profile, Mason Pack, generation, resume rows |
| Cloudflare R2 | Object storage (profile photos and document assets) | Global edge | Profile photos and other private uploaded assets |
| Vercel | Application hosting, edge delivery, request logs, observability | United States (functions); global CDN | Request metadata, IP address, user-agent, runtime logs |
| Better Auth (self-hosted) | Authentication library running on our infrastructure | Same region as our application | No external data flow - runs in-process within our app |
| Google (OAuth) | Optional OAuth sign-in | Global | Standard OAuth handshake + the profile fields you authorize during sign-in |
| Upstash | Redis (rate-limiting, ephemeral storage) | United States, EU | Hashed user / IP identifiers used as rate-limit keys; no message contents |
Notification & objection: subscribed customers will receive at least 30 days' notice before we engage a new sub-processor that processes personal data. If you have a reasonable basis to object, contact contact@vantaso.org and we'll work with you to address it before the new sub-processor goes live.