Static, no-build personal site for George Larson.
index.html- intro and navigation hubresume.html- rendersresume.txtand shows AI-assisted lens summariesresume.txt- plain text source for search, printing, and lens generationdata/resume_lenses.json- cached lens summaries (regen via script below)schedule.html- Cal.com embed for booking sessionsask.html- local, private search over the resume text (supports?q=links)style.css- shared terminal aestheticscripts/generate_lenses.py- optional helper to regenerate lens summaries with Hugging Face or Venice.aifunctions/api/lens-summary.ts- Cloudflare Pages Function that proxies Hugging Face Inference for on-demand lens summaries
- Create a GitHub repo and push these files to
main. - In Cloudflare Pages choose Create project and connect the repo.
- Build command: (leave blank)
- Output directory:
/
- Add your custom domain and follow the DNS instructions.
- Repo settings -> Pages.
- Source:
mainbranch, directory/ (root).
ask.htmlintentionally keeps everything client side. It is a placeholder for a future RAG or on-device LLM workflow while remaining private today.- The resume lens feature can be generated live (via
/api/lens-summary) or by using the cached JSON. The Cloudflare Pages function usesHF_TOKENso your secret never reaches the browser.
- Create a Hugging Face access token with Inference API permissions and set it in your shell:
- macOS/Linux:
export HF_API_TOKEN=hf_yourtoken - Windows PowerShell:
$Env:HF_API_TOKEN = "hf_yourtoken" - Cloudflare Pages build settings: add an environment variable named
HF_TOKEN(script accepts either name).
- macOS/Linux:
- (Optional) Override the model by setting
HF_MODEL(defaults tomistralai/Mistral-7B-Instruct-v0.3). - Run
python scripts/generate_lenses.py.- The script writes
data/resume_lenses.json. Commit the change to publish new summaries.
- The script writes
- If the API returns errors, the script will surface the response body so you can adjust rate limits or prompts.
- Path:
POST /api/lens-summary - Body:
{"lens": "How does George handle manufacturing ops?", "model": "mistralai/Mistral-7B-Instruct-v0.3"} - Response: JSON containing
summary,key_points,model,generated_at - The function reads
resume.txtat request time, so updates deploy instantly without new scripts.