A web app that turns a user’s career materials into grounded, tone-controlled answers for job application questions.
Users upload their resume and related documents once. The system digests them into a structured personal profile. When applying, they provide a company/job page and a question — the tool generates an answer based on their real experience, and shows which parts of their profile were used.
- One-time setup of personal career context
- Answers grounded in the user’s actual experience (not generic AI filler)
- Transparent sourcing: every answer shows which resume/notes sections were used
- Tone and style control so responses sound like the user
- Web-based (mobile-friendly), with optional self-hosting later
- Upload resume, cover letter, and other career documents
- System extracts and stores a structured profile:
- Skills
- Roles and timeline
- Projects and impact metrics
- Stories / achievements
- Original documents kept for retrieval; structured profile is the primary source of truth
Inputs
- Company name
- Job page URL (scraped for description + relevant questions)
- Question to answer (picked from suggested questions, or typed manually)
Behavior
- Scrape the job page for role description and application-style questions
- Surface suggested questions for the user to pick from
- If scraping fails or questions aren’t found → user types the question manually
- Retrieve relevant pieces from the user’s profile
- Generate a grounded answer
- Show which parts of the resume/profile the answer came from
- Chat interface over the user’s stored profile
- Useful for exploring “what have I done related to X?” before writing answers
- Foundation for a later public portfolio chatbot (parked)
- Tone controls (formal, concise, enthusiastic, technical, etc.)
- Length preference
- Custom example answers / preferences so the model can match the user’s voice
- Portfolio chatbot API (embed on personal sites; likely paid tier)
- Free + paid cloud tiers
- Advanced multi-user billing and team features
-
Grounding > cleverness
Always show the source material used in the answer. Trust matters more than flashy phrasing. -
Minimal friction on job input
Prefer URL scrape over forcing users to copy-paste long job descriptions. Fall back gracefully. -
User voice first
Tone settings and example answers exist so outputs sound like the candidate, not a generic LLM. -
Ship the personal tool first
The core loop (ingest → generate grounded answers) must feel excellent before expanding to public APIs or monetization.
| Layer | Choice |
|---|---|
| App | Next.js (API routes + UI) |
| Structured data | Postgres (SQLite for simple local/self-host) |
| Documents + embeddings | Object storage + pgvector (or Chroma/Qdrant later) |
| LLM access | LiteLLM (supports cloud providers + local models) |
- Auth + document upload + structured extraction + storage
- Settings (tone + example answers)
- Job URL scrape → description + suggested questions
- Answer generation with source citations
- Chat-with-self over the profile
- Docker self-host path
- Cloud deploy + multi-user
- (Later) Portfolio embed API + free/paid tiers
- Local / self-host: Docker Compose; optional local models via Ollama
- Cloud: Same codebase; managed Postgres + object storage; simple auth; free + paid tiers later
- User can upload a resume and get a usable structured profile
- User can paste a job URL and get suggested questions
- Generated answers are clearly tied to real experience from the profile
- Tone settings visibly change the output
- The product feels more trustworthy than pasting a resume into ChatGPT
Upload your career story once. Get application answers that are specific, grounded, and in your voice — with receipts for every claim.
querio/
├── app/ # Next.js app (pnpm)
├── get_metrics/ # Product/LLM metrics CLI (uv)
└── docker-compose.yaml
Local setup (pnpm, Ollama + qwen3.5:9b) is in DEVELOPERS.md.
The original experiment notebook now lives in the sibling ai-notebooks project as notebooks/querio.poc.ipynb.