Career Agent

Ed Donner

OpenAI chat agent that answers from a personal resume PDF and uses tools to record user details or questions it cannot answer, with Pushover notifications.

OpenAI · Gradio · PdfReader · record_user_details · record_unknown_question · Pushover

Overview

Layers 2–5 on the Mental Model. The Career Agent (Me) loads resume and work-sample PDF text plus summary.txt, chats via OpenAI, and exposes two tools: record_user_details for contact interest and record_unknown_question for gaps. Both fan out to Pushover.

Behavior

  • Ground then answer. Summary, resume, and work samples are in the system prompt before the model replies.
  • Stay in character. Prompt steers toward email capture for engaged visitors and faithful representation of the candidate.
  • Tool-gated capture. Interest and unknowns are structured tool calls (handle_tool_call via globals()), not silent drops.
  • Prompt Chaining (light). Tool results are appended and OpenAI is called again until finish_reason is not tool_calls. See Building effective agents.
  • Push on record. Side effects notify through Pushover tokens in env.
  • Single agent. No multi-agent handoff; one class owns the chat loop.

Chat flow

One user turn in the Gradio UI. Diagram key: ✦ AI agent · second line = Anthropic workflow · purple = actor · white = service.

---
config:
  theme: default
  themeVariables:
    background: "#ffffff"
    fontSize: "14px"
---
flowchart TB
    person[Person]
    turn[User message]
    agentNode["✦ Career Agent Me
Prompt Chaining"] openai[OpenAI gpt-4o-mini] record[Record details or unknown] push[Pushover] reply[Assistant reply] person --> turn --> agentNode --> openai openai -->|tool_calls| record --> push record --> openai openai -->|text| reply --> person classDef agent fill:#e8f0ee,stroke:#0f3d36,stroke-width:2px,color:#0d0d0d classDef service fill:#fafaf8,stroke:#c8c8c2,stroke-width:1px,color:#0d0d0d classDef actor fill:#f3eef8,stroke:#6b4f9a,stroke-width:2px,color:#0d0d0d class agentNode agent class turn,openai,record,push,reply service class person actor

Source: agents/1_foundations/app.py.

Implemented as the Me class in 1_foundations/app.py. Layer map on Mental Model. Part of Project.