From 94c14fee3bff0aa3f2f833cdc2e41843057a201e Mon Sep 17 00:00:00 2001 From: James Ketrenos Date: Mon, 7 Apr 2025 23:16:31 -0700 Subject: [PATCH] Just checking in --- frontend/public/docs/about.md | 11 ++++--- frontend/src/App.tsx | 25 ++++----------- frontend/src/DocumentViewer.tsx | 56 +++++++++++++++++++-------------- 3 files changed, 45 insertions(+), 47 deletions(-) diff --git a/frontend/public/docs/about.md b/frontend/public/docs/about.md index c2a3885..fc3701b 100644 --- a/frontend/public/docs/about.md +++ b/frontend/public/docs/about.md @@ -4,12 +4,14 @@ The backstory about Backstory... ## Backstory is two things -1. Backstory serves as an interactive Q&A that let's potential employers ask questions about someone's work history (aka "Backstory".) Based on the content the job seeker has provided to the RAG system, that can provide insights into that individual's resume and curriculum vitae that are often left out when people are trying to fit everything onto one page. +1. An interactive Q&A -- let potential employers ask questions about an individual's work history (aka "Backstory".) Based on the content the job seeker has provided to the RAG system, that can provide insights into that individual's resume and curriculum vitae that are often left out when people are trying to fit everything onto one page. + + 2. A resume builder -- if you have a job position, and you think this person might be a candidate, paste your job description and have a resume produced based on their data. If it looks interesting, reach out to them. If not, hopefully you've gained some insight into what drives them. -or- -2. As a potential job seeker, you can self host this environment and generate resumes for yourself. +2. A curated expert about you -- as a potential job seeker, you can self host this environment and generate resumes for yourself. While this project was generally built for self-hosting with open source models, you can use any of the frontier models. The API adapters in this project can be configured to use infrastructure hosted from Anthropic, Google, Grok, and OpenAI (alphabetical.) For information, see [https://github.com/jketreno/backstory/README.md](https://github.com/jketreno/backstory/README.md#Frontier_Models). @@ -18,9 +20,10 @@ The backstory about Backstory... 1. See if it is realistic to self-host AI LLMs. Turns out, it is -- with constraints. I've been meaning to write a blog post about what to buy to build an AI PC that can run the latest "small" (7B) parameter models. 2. Provide a recent example of my capabilities; many of my projects while working for Intel were internally facing. The source code to this project is available on [GitHub](https://github.com/jketreno/backstory). It doesn't touch on much of my history of work, however it does represent the pace at which I can adapt and develop useful solutions to fill a gap. -3. My career at Intel was diverse. Over the years, I have worked on many projects almost everywhere in the computer ecosystem. That results in a resume that is either too long, or too short. This application is intended to provide a quick way for employers to ask the LLM about me. You can view my resume in totality, or use the Resume Builder to post your job position to see how I fit. Or go the Backstory and ask questions about the projects mentioned in my resume. +3. Explore Stable Diffusion (SD), Reinforced Learning (RL), Large Language Models (LLM), Paramater-Efficient Fine-Tuning (PEFT), Quantized Low-Rank Adapters (QLORA), open source and frontier models, tokenizers, and the vast open-source ecosystem for Machine Learning (ML) and Artificial Intelligence (AI). I wanted to do this to understand the strengths, weakness, and state of the industry in its development and deployment of those technologies. +4. My career at Intel was diverse. Over the years, I have worked on many projects almost everywhere in the computer ecosystem. That results in a resume that is either too long, or too short. This application is intended to provide a quick way for employers to ask the LLM about me. You can view my resume in totality, or use the Resume Builder to post your job position to see how I fit. Or go the Backstory and ask questions about the projects mentioned in my resume. -## Some questions +## Some questions I've been asked Q. diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index e1387f5..0816f02 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -278,8 +278,8 @@ const Controls = ({ tools, rags, systemPrompt, toggleTool, toggleRag, messageHis - - + + ); } @@ -795,10 +795,6 @@ const App = () => { } }; - const onNew = async () => { - reset(["history"], "New chat started."); - } - const sendQuery = async (query: string) => { if (!query.trim()) return; @@ -1003,6 +999,7 @@ const App = () => { position="fixed" sx={{ zIndex: (theme) => theme.zIndex.drawer + 1, + maxWidth: "100vw" }} > @@ -1018,17 +1015,7 @@ const App = () => { - - - - - + {mobileOpen === false && { } iconPosition="start" /> - - + + } { mobileOpen === true && diff --git a/frontend/src/DocumentViewer.tsx b/frontend/src/DocumentViewer.tsx index 4965a94..cc5c548 100644 --- a/frontend/src/DocumentViewer.tsx +++ b/frontend/src/DocumentViewer.tsx @@ -51,9 +51,7 @@ const Document: React.FC = ({ title, children }) => ( > { title !== "" && - - {title} - + {title} } {children} @@ -80,6 +78,7 @@ const DocumentViewer: React.FC = ({generateResume, resume, const triggerGeneration = useCallback((jobDescription: string) => { setProcessing(true); + setActiveDocMobile(1); generateResume(jobDescription); }, [setProcessing, generateResume]); @@ -137,28 +136,37 @@ const DocumentViewer: React.FC = ({generateResume, resume, value={jobDescription} onChange={(e) => setJobDescription(e.target.value)} onKeyDown={handleKeyPress} - placeholder="Enter job description..." + placeholder="Enter a job description, then click Generate..." /> - - ) : (<> + + ) : ( {resume !== undefined && } - - - - {resume !== undefined && NOTE: As with all LLMs, hallucination is always a possibility. If this resume seems too good to be true, expand the LLM information for this query section and click the links to the relavent RAG source document to read the details. Or go back to 'Backstory' and ask a question.} - )} + {processing === true && <> + + + Generating resume... + + } + + {resume !== undefined + ? NOTE: As with all LLMs, hallucination is always a possibility. If this resume seems too good to be true, expand the LLM information for this query section and click the links to the relavent RAG source document to read the details. Or go back to 'Backstory' and ask a question. + : Once you click Generate under the Job Description, a resume will be generated based on the user's RAG content and the job description. + } + + )} ); @@ -185,11 +193,11 @@ const DocumentViewer: React.FC = ({generateResume, resume, value={jobDescription} onChange={(e) => setJobDescription(e.target.value)} onKeyDown={handleKeyPress} - placeholder="Enter job description..." + placeholder="Enter a job description, then click Generate..." /> - +