beeGPTfrontend.html1 match
359<footer class="bg-yellow-500 text-black p-3 text-center text-sm">
360<p>
361BeeGPT - Powered by OpenAI | <a
362href="https://val.town"
363target="_top"
1import { OpenAI } from "https://esm.town/v/std/openai";
2import { readFile } from "https://esm.town/v/std/utils@85-main/index.ts";
34// Initialize OpenAI client
5const openai = new OpenAI();
67// Bee-themed personality prompt
62}
6364// Call OpenAI with bee persona
65const completion = await openai.chat.completions.create({
66model: "gpt-4o-mini",
67messages: [
110try {
111// Generate image using DALL-E
112const response = await openai.images.generate({
113model: "dall-e-3",
114prompt: enhancedPrompt,
119});
120121console.log("OpenAI response:", JSON.stringify(response));
122123const imageUrl = response.data[0]?.url;
124125if (!imageUrl) {
126throw new Error("No image URL returned from OpenAI");
127}
128136},
137);
138} catch (openaiError) {
139console.error("OpenAI API Error:", openaiError);
140141// Check if it's a content policy violation
142if (openaiError.message && openaiError.message.includes("content policy")) {
143return new Response(
144JSON.stringify({
145error: "Your image request was rejected due to content policy. Please try a different prompt.",
146details: openaiError.message,
147}),
148{
154155// Check if it's a rate limit error
156if (openaiError.message && openaiError.message.includes("rate limit")) {
157return new Response(
158JSON.stringify({
159error: "Rate limit exceeded. Please try again later.",
160details: openaiError.message,
161}),
162{
167}
168169throw openaiError; // Re-throw for general error handling
170}
171} catch (error) {
1import { OpenAI } from "https://esm.town/v/std/openai";
2import { readFile } from "https://esm.town/v/std/utils@85-main/index.ts";
34// Initialize OpenAI client
5const openai = new OpenAI();
67// Bee-themed personality prompt
62}
6364// Call OpenAI with bee persona
65const completion = await openai.chat.completions.create({
66model: "gpt-4o-mini",
67messages: [
110try {
111// Generate image using DALL-E
112const response = await openai.images.generate({
113model: "dall-e-3",
114prompt: enhancedPrompt,
119});
120121console.log("OpenAI response:", JSON.stringify(response));
122123const imageUrl = response.data[0]?.url;
124125if (!imageUrl) {
126throw new Error("No image URL returned from OpenAI");
127}
128136},
137);
138} catch (openaiError) {
139console.error("OpenAI API Error:", openaiError);
140141// Check if it's a content policy violation
142if (openaiError.message && openaiError.message.includes("content policy")) {
143return new Response(
144JSON.stringify({
145error: "Your image request was rejected due to content policy. Please try a different prompt.",
146details: openaiError.message,
147}),
148{
154155// Check if it's a rate limit error
156if (openaiError.message && openaiError.message.includes("rate limit")) {
157return new Response(
158JSON.stringify({
159error: "Rate limit exceeded. Please try again later.",
160details: openaiError.message,
161}),
162{
167}
168169throw openaiError; // Re-throw for general error handling
170}
171} catch (error) {
236export default async function server(request: Request): Promise<Response> {
237if (request.method === "POST") {
238const { OpenAI } = await import("https://esm.town/v/std/openai");
239const openai = new OpenAI();
240241const { question } = await request.json();
242243const completion = await openai.chat.completions.create({
244messages: [
245{
7- `index.ts` - Main API entry point with Hono framework (HTTP trigger)
8- `database.ts` - SQLite database operations for storing resumes and job requirements
9- `parser.ts` - Resume parsing logic using OpenAI's GPT models
10- `scorer.ts` - Candidate scoring algorithms and feedback generation
11
1import { OpenAI } from "https://esm.town/v/std/openai";
2import type { Resume, JobRequirement, ScoringResult, ParsedResumeData } from "../shared/types";
3import { calculateSimilarity } from "../shared/utils";
45const openai = new OpenAI();
67/**
197`;
198199const completion = await openai.chat.completions.create({
200messages: [{ role: "user", content: prompt }],
201model: "gpt-4o-mini",
1import { OpenAI } from "https://esm.town/v/std/openai";
2import type { ParsedResumeData } from "../shared/types";
34const openai = new OpenAI();
56/**
7* Parses resume text using OpenAI to extract structured information
8*/
9export async function parseResume(resumeText: string): Promise<ParsedResumeData> {
48`;
4950const completion = await openai.chat.completions.create({
51messages: [{ role: "user", content: prompt }],
52model: "gpt-4o-mini",
57const content = completion.choices[0]?.message?.content;
58if (!content) {
59throw new Error("Failed to get a response from OpenAI");
60}
61104`;
105106const completion = await openai.chat.completions.create({
107messages: [{ role: "user", content: prompt }],
108model: "gpt-4o-mini",
113const content = completion.choices[0]?.message?.content;
114if (!content) {
115throw new Error("Failed to get a response from OpenAI");
116}
117
5## Features
67- Resume text analysis using OpenAI's GPT models
8- Keyword extraction and skills matching
9- Candidate scoring and ranking
40## Technologies Used
4142- OpenAI API for natural language processing
43- SQLite for data storage
44- Hono for backend API
untitled-2444index.ts10 matches
6import { SyntaxHighlighter } from "./components/SyntaxHighlighter.ts";
7import { DebugConsole } from "./components/DebugConsole.ts";
8import { OpenAIConnector } from "../shared/OpenAIConnector.ts";
9import { ThemeManager } from "./components/ThemeManager.ts";
10import { ConfettiManager } from "./components/ConfettiManager.ts";
18const syntaxHighlighter = new SyntaxHighlighter();
19const debugConsole = new DebugConsole();
20const openAIConnector = new OpenAIConnector();
21const themeManager = new ThemeManager();
22const confettiManager = new ConfettiManager();
27
28// Set up all event handlers
29setupFormHandling(tokenizer, scriptEditor, syntaxHighlighter, openAIConnector, confettiManager, textFormatter);
30setupTokenCounter(tokenizer);
31setupTemplateSelector(templateManager);
32setupAdvancedOptions(openAIConnector, debugConsole);
33setupResultActions(scriptEditor, textFormatter);
34setupHistoryModal(historyManager, scriptEditor);
51scriptEditor: ScriptEditor,
52syntaxHighlighter: SyntaxHighlighter,
53openAIConnector: OpenAIConnector,
54confettiManager: ConfettiManager,
55textFormatter: TextFormatter
144const apiKeyInput = document.getElementById("apiKey") as HTMLInputElement;
145if (apiKeyInput && apiKeyInput.value && localStorage.getItem("useDirectApi") === "true") {
146// Process directly with OpenAI API
147const prompt = createPromptForScriptType(
148text,
153);
154
155const response = await openAIConnector.createChatCompletion({
156model,
157messages: [{ role: "user", content: prompt }],
314315// Set up advanced options
316function setupAdvancedOptions(openAIConnector: OpenAIConnector, debugConsole: DebugConsole) {
317const advancedOptionsBtn = document.getElementById("advancedOptionsBtn") as HTMLButtonElement;
318const advancedOptions = document.getElementById("advancedOptions") as HTMLDivElement;
350
351if (!apiKey.startsWith("sk-")) {
352alert("Invalid API key format. OpenAI API keys start with 'sk-'");
353return;
354}
356try {
357// Set the API key in the connector
358openAIConnector.setApiKey(apiKey);
359
360// Store the preference (but not the key itself)
untitled-2444index.html2 matches
318<div class="md:col-span-3">
319<div class="flex items-center justify-between">
320<label for="apiKey" class="block text-sm font-medium text-gray-700 dark:text-gray-300">OpenAI API Key (Optional)</label>
321<span class="text-xs text-gray-500 dark:text-gray-400">Direct API connection</span>
322</div>
649
650<footer class="mt-8 text-center text-sm text-gray-500 dark:text-gray-400">
651<p>Powered by OpenAI GPT-4 • <a href="#" id="viewSourceLink" target="_top" class="text-indigo-600 dark:text-indigo-400 hover:underline">View Source</a></p>
652</footer>
653</div>