One profile, two heroes: an AI resume and a scannable AR portfolio
AR Portfolio & Resume Builder is a job-application toolkit for students and early-career professionals. A student signs in, builds a structured profile (a summary, skills, education, experience, projects, certificates and a 60-second video intro), and the product delivers two things. First, an AI writer produces an ATS-optimised resume tailored to a specific target role and job description, a matching cover letter, and an ATS match-score analysis that compares a resume against a pasted job description with matched and missing keywords plus suggestions. Second, the student publishes a public, QR-scannable AR portfolio — a page with no login where their projects and certificates float as a Three.js "badge constellation" that a recruiter can orbit, tap for detail, and, on AR-capable browsers, place in real space with WebXR. The printed CV carries the QR; the QR opens the living 3D portfolio.
Build your profile once
Summary, skills, education, experience, projects, certificates and a short video intro — the single source of truth for everything the AI writes.
AI ATS resume
A clean, print-ready resume tailored to a target role and job description, phrased for applicant-tracking systems.
Matching cover letter
A tailored cover letter for a named company and role, generated from the same truthful profile.
ATS match score
Paste a job description and get a match score with matched and missing keywords and concrete suggestions.
3D AR portfolio
Projects and certificates rendered as an orbit-controlled 3D badge constellation recruiters can scan and explore.
Scannable and shareable
A stable public link and QR code, ready for a printed CV, an email signature or a LinkedIn profile.
StudentID, all under the prefix APB_.
Built for people applying for their next role
Students & final-year graduates
Anyone preparing for campus placements or their first job who needs a strong, role-tailored resume fast.
Early-career professionals
People a few years in who want a cleaner resume and a memorable portfolio for their next move.
Developers & designers
Portfolio-driven candidates who want their projects presented as an interactive 3D showcase, not a flat list.
Career switchers
Anyone re-framing existing, truthful experience toward a new target role and matching it to real job descriptions.
It suits anyone who wants a resume that is tailored to a specific role and a portfolio that stands out when a recruiter scans it. It is a writing and presentation aid — it rephrases and organises the student's own truthful information; it does not fabricate experience, and it is not a guarantee of an interview or an offer.
Simple flat monthly subscription
AR Portfolio & Resume Builder is billed as a flat monthly subscription per student — one price covers resume generation, cover letters, ATS match scoring, project enhancement and the public AR portfolio. Payment is via Razorpay from the Subscription area, and a successful charge keeps the plan active for one month from the payment date.
The page map
| Page | Who | Purpose |
|---|---|---|
| APB_Default.aspx | Public landing | Marketing landing page and sign-in entry point; explains the two heroes — the AI ATS resume and the scannable AR portfolio — and links into the shared AIS sign-in flow. |
| APB_Dashboard.aspx | All signed-in | The post-login home: student name, headline, target role and tier, a profile-completeness meter, stat cards (projects, certificates, resumes, cover letters, ATS scans, best ATS score, whether a video intro exists), quick CTAs into the profile, resume generator and AR portfolio, and a public-portfolio link + QR card. |
| APB_ProfileBuilder.aspx | All signed-in | Edit the profile: summary, skills (as chips), phone, location, LinkedIn/GitHub/Website links, repeatable education and experience rows, plus the headline, target role and a public on/off toggle for the AR portfolio. |
| APB_ProjectUpload.aspx | All signed-in | Manage projects (title, description, tech stack, URL, optional image) with a per-project "Enhance with AI" action that polishes rough text into strong resume bullets, and manage certificates (title, issuer, issue date, credential URL) in a second section. |
| APB_VideoRecorder.aspx | All signed-in | Record a 60-second video intro in the browser via WebRTC with a live countdown and auto-stop, preview it, and upload it to the video handler; shows the current active intro with a re-record option. |
| APB_ResumeGenerator.aspx | All signed-in hero | Confirm a target role, optionally paste a target job description, and generate an ATS-optimised resume rendered in a clean, print-ready layout; reopen past resumes; and run the ATS match-score panel (paste a job description, analyse, see the score with matched/missing keyword chips and suggestions). |
| APB_CoverLetterGen.aspx | All signed-in | Enter a company name, role title and job description and generate a tailored cover letter with copy and print buttons and a highlights list; reopen past cover letters. |
| APB_ARPortfolio.aspx | Public / preview hero | The public, no-login AR portfolio resolved by a public token — a Three.js 3D badge constellation of the student's projects and certificates with orbit controls, tap-for-detail, the header/summary/skills/video intro, and a WebXR "View in AR" option on supported devices; also runs in a logged-in preview mode. |
| APB_Analytics.aspx | All signed-in | Chart.js visualisations of the student's activity — counts of projects, certificates, resumes, cover letters and ATS scans, the best ATS score, and a profile-completeness checklist. |
| APB_Subscription.aspx | Settings capability | Current plan, expiry and days remaining, and a Razorpay checkout to subscribe or renew. |
| APB_Master.master | Layout | The shared master page — sidebar navigation, topbar and mobile hamburger menu — every APB_ page renders inside it. |
From a blank profile to a resume and a scannable portfolio
Build your profile
On APB_ProfileBuilder.aspx the student enters a summary, skills, education and experience — all truthful.
Add projects & certs
APB_ProjectUpload.aspx collects projects and certificates; "Enhance with AI" polishes rough text into bullets.
Record a video intro
An optional 60-second WebRTC intro is captured and uploaded via APB_VideoUploadHandler.ashx.
Generate the resume
GenerateResume builds an ATS resume for a target role; GenerateCoverLetter writes a matching letter.
Check the ATS score
PredictATSScore compares the resume to a pasted job description and lists matched and missing keywords.
Publish & share
Toggle the portfolio public, share the QR from APB_ARPortfolio.aspx, and recruiters explore it in 3D.
Four focused AI passes, all routed through APB_ClaudeHelper
All AI calls are routed through APB_ClaudeHelper and never throw — on any
error or malformed reply, the calling page shows a clear message instead of a raw exception. Crucially, every
prompt instructs the model to rephrase and organise only the student's supplied, truthful information and to
never invent employers, degrees, dates or achievements.
GenerateResume — an ATS-optimised, role-tailored resume
You are a professional resume writer. Using ONLY the truthful profile
data provided (never inventing employers, degrees, dates or achievements),
write an ATS-optimised resume for the target role "{{target_role}}" and,
if provided, tailored to this job description:
{{target_job_description}}
Profile data (JSON): {{profile_json}}
Return STRICT JSON only: { "summary": "...", "skills": ["..."],
"experience": [ { "title":"...", "org":"...", "period":"...",
"bullets":["..."] } ], "education": [ { "degree":"...",
"institution":"...", "period":"...", "detail":"..." } ],
"projects": [ { "title":"...", "tech":"...", "bullets":["..."] } ],
"certifications": ["..."] }
Rephrase for clarity and keyword coverage. No emojis, no superlatives,
no invented facts.
GenerateCoverLetter — a matching cover letter
Write a concise, professional cover letter for the role "{{role_title}}"
at "{{company_name}}", using ONLY the truthful profile provided and, if
present, tailoring to this job description:
{{job_description}}
Profile data (JSON): {{profile_json}}
Return STRICT JSON: { "greeting":"...", "body":["paragraph 1",
"paragraph 2", "paragraph 3"], "closing":"...",
"highlights":["a short highlight","another"] }
Keep it honest, specific and free of invented claims. No emojis, no
superlatives.
PredictATSScore — the ATS match-score analysis
Compare this resume text to the job description and estimate how well an
applicant-tracking system would match them.
Resume: {{resume_text}}
Job description: {{job_description}}
Return STRICT JSON: { "score": 0-100, "matchedKeywords":["..."],
"missingKeywords":["..."], "suggestions":["specific, actionable
suggestion", "another"] }
Base the score only on genuine overlap of skills, tools and responsibilities.
Be honest; do not inflate. No emojis, no superlatives.
EnhanceProjectDescription — polish rough project text into bullets
Rewrite this rough project description into a strong, concise summary and
2-4 resume bullet points aimed at a "{{role}}" role, using ONLY the facts
given (never inventing metrics or outcomes that are not implied).
Raw description: {{raw_description}}
Return STRICT JSON: { "summary":"one clear sentence",
"bullets":["action + result bullet","another"] }
Keep it factual and specific. No emojis, no superlatives, no invented
numbers.
APB_usp_SaveResume,
APB_usp_SaveCoverLetter and APB_usp_SaveResumeScan) so they
can be reopened later, and each can be regenerated for a different target role or job description.An honest read on how a job description matches your resume
Applicant-tracking systems (ATS) rank resumes by how well they match a job description's keywords and requirements. The ATS panel on the Resume Generator lets a student paste a target job description alongside their resume text and get an estimated match score from 0 to 100, a list of keywords that are matched, a list of important keywords that appear to be missing, and specific, actionable suggestions to close the gap. The score is an estimate based on genuine skill, tool and responsibility overlap — it is a guide for improving a resume, not a promise of how any specific employer's ATS will actually rank it.
A clear 0–100 score
A single gauge showing overall alignment between the resume and the pasted job description.
Matched keywords
The skills, tools and responsibilities the resume already covers, shown as chips.
Missing keywords & fixes
Important terms the resume lacks, plus concrete suggestions — add only what is genuinely true of you.
A universal 3D constellation, with WebXR AR where the device supports it
Three.js badge constellation
Projects and certificates float as interactive 3D badges with a gentle idle rotation, orbit controls and tap-for-detail.
QR-scannable, no login
A stable public token resolves the portfolio server-side; recruiters open it straight from a scan with no account needed.
WebXR where supported
On AR-capable Android/Chrome, a "View in AR" button hit-tests a surface and places the constellation in the room.
Public toggle & graceful states
A student can turn the public portfolio off; an invalid or private token shows a gentle "not available" message.
The stack
Backend
ASP.NET Web Forms, VB.NET, .NET Framework 4.7.2. AJAX via page <WebMethod> PageMethods returning JSON. No full-page postbacks for data operations.
Database
SQL Server (shared db_9b0fff_aiscompany). Parameterised CDATA SQL and stored procedures via APB_DBHelper, soft delete (IsDeleted), audit columns. Prefix-scoped to APB_.
Frontend
Tailwind CDN, purple/teal glassmorphism, Font Awesome 6.5.1, Three.js (ESM importmap) with OrbitControls and the WebXR AR button for the 3D portfolio, WebRTC (getUserMedia + MediaRecorder) for the video intro, QRCode.js for the share QR, and Chart.js for analytics. Master page APB_Master.master.
Integrations
Groq/Claude AI routing (resume, cover letter, ATS scoring, project enhancement), Razorpay (subscription checkout + webhook), WhatsApp (1msg.io) portfolio-share notices, Telegram build/activity alerts.
Shared helpers referenced across the pages: APB_DBHelper
(GetTable / GetTableSP / GetTableSPSet / Execute / ExecuteSP / Scalar / P), APB_ClaudeHelper
(GenerateResume, GenerateCoverLetter,
PredictATSScore, EnhanceProjectDescription),
APB_WhatsApp, and the shared AIS RBAC/auth kit for sign-in, since there is no separate
APB_Auth table — the student's identity comes from the shared kit and
StudentID is the OrgId.
A student-scoped data model
Tables
APB_Students
The tenant student — name, contact details, headline, target role, public token, public flag, subscription tier and expiry. StudentID is the OrgId.
APB_Profiles
The one profile per student — summary, skills, phone, location, LinkedIn/GitHub/Website URLs, plus education and experience stored as JSON.
APB_Projects
The student's projects — title, description, tech stack, project URL and optional image, with sort order and soft delete.
APB_Certificates
The student's certificates — title, issuer, issue date and credential URL.
APB_VideoIntros
The 60-second video intro — stored URL, duration in seconds and an optional transcript, with an active flag.
APB_Resumes
Generated resumes — target role, job description, the structured resume JSON and a created timestamp for reopening.
APB_CoverLetters
Generated cover letters — company, role, job description and the generated letter content.
APB_ResumeScans
ATS match-score analyses — the score, matched/missing keyword lists and suggestions against a pasted job description.
APB_Subscriptions
Razorpay subscription/order rows — plan, amount, dates, status, webhook payload.
APB_WhatsAppLog
Outbound WhatsApp message log — mobile number, message type, body, status.
APB_error_log
Page/method-level error log for Try-Catch reporting.
APB_activity_log
Activity trail — tenant StudentID and acting kit-user UserID kept distinct.
Key stored procedures
| APB_usp_GetStudent | Resolve the active student row plus a profile-completeness percentage. |
| APB_usp_GetProfile / APB_usp_SaveProfile | Read or upsert the student's profile (summary, skills, links, education/experience JSON). |
| APB_usp_SaveProject / APB_usp_GetProjects / APB_usp_DeleteProject | Add or edit a project (returns its id), list projects, or soft-delete one. |
| APB_usp_SaveCertificate / APB_usp_GetCertificates / APB_usp_DeleteCertificate | Add or edit a certificate, list certificates, or soft-delete one. |
| APB_usp_SaveVideoIntro / APB_usp_GetActiveVideoIntro | Store the uploaded video intro; fetch the current active intro. |
| APB_usp_SaveResume / APB_usp_GetResumes / APB_usp_GetResume | Save a generated resume, list past resumes, reopen a single resume. |
| APB_usp_SaveCoverLetter / APB_usp_GetCoverLetters | Save a generated cover letter and list past cover letters. |
| APB_usp_SaveResumeScan / APB_usp_GetResumeScans | Save an ATS match-score analysis and list past scans. |
| APB_usp_GetPortfolioByToken | Public: resolve a public portfolio by token in three result sets — header/profile/video, projects, certificates. |
| APB_usp_GetAnalytics | Headline counts for the dashboard and analytics view. |
| APB_usp_SaveSubscription | Record a subscription/order row; extends the student's plan on a paid/active/charged webhook event. |
Deploy via sqlcmd
Apply the product schema directly to the shared SQL Server instance, then verify object counts. The script is idempotent and prefix-scoped — it never touches other products' objects.
sqlcmd -S sql5083.site4now.net -U db_user -P ****** -d db_9b0fff_aiscompany ^
-i C:\asp.net\CompanyProjects\AIAis\ArProjects\ARPortfolioBuilder\APB_Database.sql
-- verify
SELECT COUNT(*) FROM sys.tables WHERE name LIKE 'APB_%'; -- the product tables
SELECT COUNT(*) FROM sys.procedures WHERE name LIKE 'APB_usp_%'; -- the proc layer
Serve the site over HTTPS at /ArProjects/ARPortfolioBuilder/ — required for
getUserMedia video-intro capture and for WebXR. Set the Groq/Claude and Razorpay
credentials in the shared config. Sign in, build a profile, add a project and enhance it, record a short video
intro, generate a resume for a target role, run an ATS scan against a job description, generate a cover letter,
toggle the portfolio public, and open the public AR portfolio link to confirm the 3D constellation and QR both
work.
Demo & review accounts
APB_Default login. The demo student "Demo Student" is seeded with a complete profile,
three sample projects, two certificates, a video intro row, a generated resume and an ATS scan, and a fixed
public portfolio token (44444444-4444-4444-4444-444444444444) so the AR-portfolio demo
URL is stable. The reviewer/demo account is granted full, non-expiring access so every feature unlocks without
hitting a paywall or checkout — important for app-store and Play-review access checks.How your profile, resume text and video intro are handled
getUserMedia and uploaded, at the student's choice, to their own
account; nothing is recorded or uploaded until the student chooses to save. A student can skip the video
entirely and still use every other feature.
Server-side gating
Every authenticated page and PageMethod re-checks sign-in and the calling student's own StudentID — never trusting the client.
Student scoping
All profiles, projects, certificates, resumes, cover letters, scans and subscription rows are filtered by the signed-in student's StudentID, so one student never sees another's data.
Public only when chosen
The AR portfolio is reachable by token only when the student sets it public; the public procedure returns nothing for a private or invalid token.
Defensive AI parsing
AI responses for resumes, cover letters and ATS scoring are parsed defensively; malformed output surfaces as a clear on-screen message rather than a raw error or a corrupted save.
Payment verification
Razorpay orders are created server-side; webhook events are HMAC-verified before a subscription is marked paid.
Truthful-input guardrail
Every AI prompt instructs the model to rephrase only the student's supplied facts and to never invent employers, degrees, dates or metrics.
Where AR Portfolio & Resume Builder goes next
- Multiple resume templates: a choice of clean, print-ready resume layouts and colour themes beyond the current default.
- Recruiter view analytics: anonymous counts of how many times a public AR portfolio was opened and which projects were tapped, for the student's own dashboard.
- LinkedIn / GitHub import: an optional import to pre-fill the profile from a public LinkedIn or GitHub URL, still fully editable and truthful before use.
- Interview question prep: AI-generated likely interview questions drawn from the target job description and the student's own truthful projects.
- Video intro transcription: automatic transcription and a short AI summary of the 60-second intro, stored alongside the recording.
- Custom domains for portfolios: a friendly public URL or custom sub-path for a student's AR portfolio beyond the token link.
- Richer AR scenes: optional layouts for the badge constellation (timeline, grid, orbit) and a downloadable model for offline AR viewers.