File size: 3,333 Bytes
de852c2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
---
title: LaunchPadAI
emoji: 🚀
colorFrom: green
colorTo: blue
sdk: docker
pinned: false
app_port: 7860
---

# LaunchPadAI Panel

An AI undergraduate internship and early-career assistant built on Neon AI's
Collaborative Conversational AI (CCAI) framework. Ask about Handshake/LinkedIn
search, resume polish, interview prep, application cadence, and networking —
and get diverse perspectives from a panel of five career AI advisors.

This repository is a **complete, deployable application** — the CCAI
multi-advisor stack (FastAPI backend + React frontend) wired to the
LaunchPadAI configuration in [`launchpad_config.yaml`](launchpad_config.yaml)
and the personas in [`personas/career_advisors/`](personas/career_advisors).

## Advisors

1. **Internship Search Strategist** — roles, platforms, target lists
2. **Resume Optimizer** — ATS, bullets, skills match
3. **Interview Coach** — prep, presence, company research
4. **Application Scheduler** — cadence, deadlines, tracking
5. **Career Path Mentor** — networking, pivot, full-time transition

## Hugging Face Spaces deployment

This Space ships as a single Docker image built from the repository-root
[`Dockerfile`](Dockerfile). The container:

1. Builds the React frontend (CRA) at image-build time with `REACT_APP_API_URL=""`
   so every `fetch` issues a relative URL.
2. Serves the bundled SPA from FastAPI at `/`, with the API on `/api/...`,
   `/auth/...`, etc. — all on the same `:7860` origin.
3. Persists user data (auth, profiles, chat sessions) in **SQLite via
   `aiosqlite`** at `${DATA_DIR}/launchpad_panel.db`. Mount a Hugging Face
   Storage Bucket at `/data` to make the database survive Space rebuilds.
   There is **no MongoDB** and no third-party data plane.

### Required Space secrets

| Secret | Purpose |
|--------|---------|
| `JWT_SECRET_KEY` | Signs auth tokens. Set this to a long random string. |
| `OPENAI_API_KEY` | Powers the default OpenAI provider (`gpt-5.4-mini`). |
| `GEMINI_API_KEY` | Optional — only if you switch `llm.provider` back to `gemini`. |

Set these under **Settings → Variables and secrets** on the Space.

## Local deployment

### Option A — Docker

```bash
# From the repo root, create a .env with at least:
#   JWT_SECRET_KEY=some-long-random-string
#   OPENAI_API_KEY=your-openai-key
docker compose up --build
```

Open <http://localhost:7860>. Override the host port with `LAUNCHPAD_HOST_PORT` if
7860 is taken.

### Option B — Native (no Docker)

**Backend** (terminal 1):

```bash
cd multi_llm_chatbot_backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
CONFIG_PATH=../launchpad_config.yaml uvicorn app.main:app --reload --port 8000
```

**Frontend** (terminal 2):

```bash
cd phd-advisor-frontend
npm install
REACT_APP_API_URL=http://localhost:8000 npm start
```

Open <http://localhost:3000> — you should see **LaunchPadAI** with five career advisors.

## Configuration

App UI, login fields, chat examples, orchestrator keywords, and LLM/RAG
settings live in [`launchpad_config.yaml`](launchpad_config.yaml). The five
advisor YAMLs in `personas/career_advisors/` load automatically. Point the app at a
different config with `CONFIG_PATH`.

The workshop draft that generated this panel is saved as
[`advisor-panel-draft.json`](advisor-panel-draft.json).