Incinote — AI Job Application Assistant (Chrome Extension SaaS)
A Chrome extension and web app that turns any job description into a personalized application package — tailored cover letters, role-specific interview prep, honest red-flag checks, and a clear action plan — powered by an AI that remembers your resume and preferences.
Built, shipped, and operated end-to-end as a solo developer: from first commit to a live listing on the Chrome Web Store, with a free tier and paid Pro plan ($10/month).
What it does
• Reads the active tab (job posting, AI chat, article) and runs schema-validated AI analysis using Gemini 2.5 Flash across multiple modes — Job Application, Evaluation, Research, Study, Strategy,
Explainer.
• Personalizes every analysis using the user's stored resume and career preferences, so the same job description yields different cover letters for different people.
• Exports results to PDF, DOCX, Markdown, and Notion (via the official Notion API).
• Encrypts saved analyses at rest (AES-256-CBC) before storing in MongoDB.
What I built
• Chrome Manifest V3 extension with sidepanel UI, externally-connectable auth bridge with the web app, and chrome.scripting-based content extraction with narrow, justifiable permissions.
• Express + MongoDB backend with a prompt/schema-per-mode architecture, hybrid auth (Google OAuth + JWT for Pro users, device-ID rate limiting for the anonymous free tier), and a resume parsing
pipeline (PDF via Gemini File API, DOCX via mammoth).
• Next.js (App Router) web app — marketing site, dashboard, billing, settings, and saved-history views with per-mode result rendering.
• Dual-provider payment system (LemonSqueezy globally, Paystack for Nigeria) with HMAC-verified webhooks, subscription state sync, and geo-detected PPP pricing.
• Server-rendered exports across four formats (pdfkit, docx, pptxgenjs, Markdown).
• Full Chrome Web Store compliance loop: narrow permissions, privacy policy, terms, support page, permission justifications, and reviewer test credentials.