{"componentChunkName":"component---src-templates-project-template-js","path":"/projects/ai-native-hiring-funnel","result":{"data":{"project":{"title":"AI-Native Hiring Funnel","slug":"ai-native-hiring-funnel","description":"The screening pipeline you're using right now. A single profile.json is the source of truth for this Gatsby site, an MCP server (8 tools incl. a semantic match_role engine), Schema.org + llms.txt + .well-known discovery, and a live serverless link-minter: paste a JD into a password-protected admin UI and get a short s.nishanttiwari.com link that returns a self-contained screening prompt — content-negotiated to serve a copy-and-paste page to browsers and raw text to AIs. No LLM in the request path, so it runs at ~$0. Surface propagation is regression-tracked in a custom agentic QA system (AQA).","caseStudy":"> Meta note: this is the system you're using to read this. Every claim here is checkable by interacting with the site itself.\n\n## The problem\n\n\"Let your AI screen me objectively\" sounds great until you hit reality: most recruiter-facing AIs **won't fetch a custom link** (browsing off, or they refuse un-indexed personal domains), a hand-tuned profile **reads as gamed**, and anything that calls an LLM per screen **costs money and leaks tokens**. I wanted a screening funnel that is *verifiable*, works in *any* AI, and costs ~$0 to run — so a hiring manager can get an objective read in seconds without trusting my word or my web access.\n\n## The approach\n\nOne `profile.json` is the single source of truth. Everything else is generated from it, and a live serverless service mints short, shareable screening links on demand — each one a self-contained prompt that needs no retrieval and no LLM call.\n\n## Architecture\n\n- **Single source of truth → many surfaces.** `profile.json` drives this Gatsby site, an **MCP server** (8 tools, including a semantic `match_role` engine), Schema.org JSON-LD, an `llms.txt`, a `.well-known/ai-profile.json` discovery doc, and per-section JSON endpoints regenerated at build. A profile edit propagates everywhere from one place — enforced by a regression checklist (below).\n- **Serverless link-minter.** A password-protected admin UI takes a job description and returns a short `s.nishanttiwari.com/<slug>` link in seconds, no redeploy. It runs on **AWS Lambda + DynamoDB** (slug → JD), behind an **API Gateway HTTP API** with a **Route 53 + ACM** custom domain, all defined in **CloudFormation**. The Lambda fetches the *live* profile at request time (short-cached), so links never go stale.\n- **Self-contained, zero-LLM prompt.** A link returns the full screening prompt with the profile embedded inline + the role baked in. **No LLM is called in the request path** — it's string assembly — so each screen costs effectively nothing and doesn't depend on the recruiter's AI being able to browse.\n- **Content negotiation.** The *same* URL serves two ways: a **browser** gets a clean copy-and-paste page with a Copy button; an **AI/curl** gets raw `text/plain`. That's the fix for AIs that won't fetch links — the human opens it, clicks Copy, pastes into any model.\n- **Agentic QA.** Propagation across all ten surfaces (endpoints, discovery doc, `/projects`, `/hire`, live links, homepage, admin, MCP) is tracked as a standing test plan in **AQA**, a custom agentic test-management system — so a profile change isn't \"done\" until every surface reflects it.\n\n## Standout engineering\n\n- **Credibility by construction.** The prompt leads with *independently verifiable* signals (Upwork record, live products, public repos, a runnable MCP server) and explicitly tells the screener to weight those over self-description — turning \"is this tailored?\" into \"here's what you can check.\"\n- **The content-negotiation insight.** The failure mode wasn't technical; it was that you can't make an arbitrary AI browse. Serving a browser-friendly copy page from the same link sidesteps it without changing what gets shared.\n- **No-drift discovery.** The page, the MCP server, and the live links all build from the same source module, so the machine-readable and human-readable views can't disagree.\n\n## Honest scope\n\nThis is a personal hiring funnel, not a product. The one friction no design removes: a *non-browsing* AI still needs a human to paste the text — so the goal was to make that paste a single click, not to pretend it isn't needed.\n","gallery":[],"date_start":"2026","date_end":null,"hours":null,"client":null,"tags":["ai","recruitment","serverless","mcp","aws","meta"],"outcomes":["One profile.json drives every surface — site, MCP server, Schema.org JSON-LD, llms.txt, .well-known discovery doc, and per-section JSON endpoints — so a single edit propagates everywhere","Live serverless link-minter (AWS Lambda + DynamoDB + API Gateway HTTP API, Route 53 + ACM, CloudFormation IaC): a protected admin UI turns any JD into a short shareable screening link in seconds, no redeploy","Content-negotiated links: the same URL serves a one-click copy-and-paste page to a browser and raw text/plain to an AI, so screening works in any model whether or not it can browse","Self-contained screening prompt embeds the full profile inline and calls no LLM in the request path — zero token cost, no dependency on the recruiter's AI having web access","5-dimension match_role engine with vendor-neutral skill aliasing and local MiniLM semantic matching (no API key); surface propagation regression-tracked in a custom agentic QA system (AQA)"],"tech_stack":["AWS Lambda","DynamoDB","API Gateway","CloudFormation","Route 53 / ACM","Gatsby","React","MCP","Node.js","Schema.org"],"links":[{"label":"Live","url":"https://nishanttiwari.com/hire"}],"image":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='273'%20viewBox='0%200%20400%20273'%20preserveAspectRatio='none'%3e%3cpath%20d='M225%20142v6c0%202%205%202%2042%202h42v-9h-42l-42%201'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.4598540145985401,"src":"/static/3c285184ab50268ff890fad8317c44ec/ee604/ai-native-hiring-funnel.png","srcSet":"/static/3c285184ab50268ff890fad8317c44ec/69585/ai-native-hiring-funnel.png 200w,\n/static/3c285184ab50268ff890fad8317c44ec/497c6/ai-native-hiring-funnel.png 400w,\n/static/3c285184ab50268ff890fad8317c44ec/ee604/ai-native-hiring-funnel.png 800w,\n/static/3c285184ab50268ff890fad8317c44ec/f3583/ai-native-hiring-funnel.png 1200w","srcWebp":"/static/3c285184ab50268ff890fad8317c44ec/58556/ai-native-hiring-funnel.webp","srcSetWebp":"/static/3c285184ab50268ff890fad8317c44ec/61e93/ai-native-hiring-funnel.webp 200w,\n/static/3c285184ab50268ff890fad8317c44ec/1f5c5/ai-native-hiring-funnel.webp 400w,\n/static/3c285184ab50268ff890fad8317c44ec/58556/ai-native-hiring-funnel.webp 800w,\n/static/3c285184ab50268ff890fad8317c44ec/99238/ai-native-hiring-funnel.webp 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"stack_icons":[{"name":"Lambda","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'/%3e","width":24,"height":24,"src":"/static/9ebd18b0cc4dd6f7e2988a7efc840b92/6d1ba/lambda.png","srcSet":"/static/9ebd18b0cc4dd6f7e2988a7efc840b92/6d1ba/lambda.png 1x,\n/static/9ebd18b0cc4dd6f7e2988a7efc840b92/a9c35/lambda.png 1.5x,\n/static/9ebd18b0cc4dd6f7e2988a7efc840b92/559c9/lambda.png 2x","srcWebp":"/static/9ebd18b0cc4dd6f7e2988a7efc840b92/f8bad/lambda.webp","srcSetWebp":"/static/9ebd18b0cc4dd6f7e2988a7efc840b92/f8bad/lambda.webp 1x,\n/static/9ebd18b0cc4dd6f7e2988a7efc840b92/f81b6/lambda.webp 1.5x,\n/static/9ebd18b0cc4dd6f7e2988a7efc840b92/804d1/lambda.webp 2x"}}}},{"name":"DynamoDB","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2012v12h25V12l-1-9v3l-3-3c-3-3-3-3-12-3H0v12m8-8c-2%201-3%201-3%208%200%208%201%2011%203%208l5-1%203%201h-3c-5%202-6%202-3%202%205%200%207-2%207-5l2-6c2-2%202-2%201-3l-1-1c0-2-1-2-7-3H8'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":20,"height":20,"src":"/static/82defa6954b6e11e8d81c1bc0e0e5106/dba72/dynamodb.png","srcSet":"/static/82defa6954b6e11e8d81c1bc0e0e5106/dba72/dynamodb.png 1x","srcWebp":"/static/82defa6954b6e11e8d81c1bc0e0e5106/e3c56/dynamodb.webp","srcSetWebp":"/static/82defa6954b6e11e8d81c1bc0e0e5106/e3c56/dynamodb.webp 1x"}}}},{"name":"Node.js","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M1%201v22c2%202%2020%201%2022-1s3-22%201-21H1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":24,"height":24,"src":"/static/a9c1179d285f13340020fc303e7afa0d/6d1ba/nodejs.png","srcSet":"/static/a9c1179d285f13340020fc303e7afa0d/6d1ba/nodejs.png 1x,\n/static/a9c1179d285f13340020fc303e7afa0d/a9c35/nodejs.png 1.5x,\n/static/a9c1179d285f13340020fc303e7afa0d/559c9/nodejs.png 2x","srcWebp":"/static/a9c1179d285f13340020fc303e7afa0d/f8bad/nodejs.webp","srcSetWebp":"/static/a9c1179d285f13340020fc303e7afa0d/f8bad/nodejs.webp 1x,\n/static/a9c1179d285f13340020fc303e7afa0d/f81b6/nodejs.webp 1.5x,\n/static/a9c1179d285f13340020fc303e7afa0d/804d1/nodejs.webp 2x"}}}},{"name":"React","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='24'%20viewBox='0%200%2028%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M6%202L5%206l-2%204c-4%202-4%204-1%206%202%201%203%202%203%204%201%204%204%205%206%203h4c4%202%206%201%206-3%200-2%201-3%203-4%203-1%203-4-1-7l-2-2c1-5-2-7-6-5-1%202-2%202-4%200H6'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":23,"height":20,"src":"/static/b1ac6b31209a966fdef0a91802cc67d8/dba72/react.png","srcSet":"/static/b1ac6b31209a966fdef0a91802cc67d8/dba72/react.png 1x","srcWebp":"/static/b1ac6b31209a966fdef0a91802cc67d8/e3c56/react.webp","srcSetWebp":"/static/b1ac6b31209a966fdef0a91802cc67d8/e3c56/react.webp 1x"}}}},{"name":"API","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M1%201v22c2%202%2020%201%2022-1s3-22%201-21H1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":24,"height":24,"src":"/static/fb76c0da90f90c016ad01e4dc810443f/6d1ba/api.png","srcSet":"/static/fb76c0da90f90c016ad01e4dc810443f/6d1ba/api.png 1x,\n/static/fb76c0da90f90c016ad01e4dc810443f/a9c35/api.png 1.5x,\n/static/fb76c0da90f90c016ad01e4dc810443f/559c9/api.png 2x","srcWebp":"/static/fb76c0da90f90c016ad01e4dc810443f/f8bad/api.webp","srcSetWebp":"/static/fb76c0da90f90c016ad01e4dc810443f/f8bad/api.webp 1x,\n/static/fb76c0da90f90c016ad01e4dc810443f/f81b6/api.webp 1.5x,\n/static/fb76c0da90f90c016ad01e4dc810443f/804d1/api.webp 2x"}}}}]}},"pageContext":{"slug":"ai-native-hiring-funnel"}},"staticQueryHashes":["3724428426"]}