Inspiration

Cold outreach is awkward, slow, and usually generic. We wanted a tool that actually understands who you’re contacting—pulling real facts from the web—and helps you start a thoughtful conversation in seconds.

At the same time, we saw how outreach and networking can feel especially intimidating for teens and young people trying to build independence—whether that’s landing their first internship, finding mentors, or starting side projects. ForgeLink helps youth develop autonomy by giving them a safe, empowering way to initiate professional conversations, build connections, and practice communication skills early. Instead of relying on parents, teachers, or pre-written templates, teens can take ownership of their own networking, learning how to approach people confidently and authentically. This not only strengthens independence but also lays down real-world life skills that grow with them.

What it does

  • Takes a name + headline and researches the person on the open web.
  • Extracts grounded bullet-point facts.
  • Lets you chat to generate emails, DMs, question lists, or talking-point summaries—automatically detecting intent from your prompt.
  • Saves each person as a “target” in a sidebar so you can jump back into their thread, with delete and revisit support.
  • Shows a “thinking” bubble while AI drafts, then returns a clean, copy-ready result.

How we built it

  • Frontend: React + Vite; a sidebar-driven layout (targets list), Chat view with system intro bubble (facts + sources), and a typing indicator.
  • Backend: Node/Express with JWT auth; MongoDB Atlas (Users, Targets, Drafts) via Mongoose.
  • Research agent: Python BrowserUse (+ Playwright) spawned from Node; starts at a Google search for “name + headline”, gathers text + visited URLs, returns JSON.
  • AI: Google Gemini for (1) fact extraction, (2) overlap/angle reasoning, and (3) response generation. We pass facts, sources, the best URL, and a clipped profile excerpt so drafts stay grounded.
  • Intent auto-detect: If the user doesn’t specify, the server classifies the prompt into email / questions / message / summary and gates the output accordingly.
  • DX niceties: Nodemon, environment-based config, robust JSON parsing, and error handling.

Challenges we ran into

  • Keeping outputs grounded (not hallucinated): initially, Gemini continued to generate email templates regardless of the user's prompt. We had to pass sources + profile text into the Gemini prompt and enforce output rules server-side.
  • Secure API: moving from body-passed IDs to JWT user IDs across all routes.
  • Tool issues: dotenv (Node vs Python), special characters in MongoDB URIs, JSX loader issues in Vite, and handling model responses that sometimes weren’t strict JSON.
  • Avoiding LinkedIn as the default: fixed by telling the LLM to start on the Google home page and guiding the agent with system hints.

Accomplishments that we're proud of

  • End-to-end pipeline from search → facts → chat draft.
  • Intent-aware generation that respects what the user actually types.
  • A clean UI/UX: stacked sidebar, instant summary panel, and a loading bubble.
  • Deletion & persistence of targets so outreach feels like an organized workflow, not a one-off.

What we learned

  • Small prompt tweaks + server-side validation dramatically improve reliability.
  • Giving LLM agents a better starting URL (Google query) reduces drift and speeds up good results.
  • JWT-based ownership is simpler and safer than passing user IDs around.
  • Tight JSON contracts + lax parsing fallbacks are essential for production-level stability.

What's next for ForgeLink

  • Send & track: one-click send via Gmail/Outlook APIs, with reply tracking.
  • Personalization memory: learn your voice over time; reuse snippets and past wins.
  • Source controls: allow/deny lists, company-site priority, and cached profiles for speed.
  • Multi-persona modes: recruiter, founder, student, sales—different tones and goals.
  • Quality evals: A/B prompts, automatic linting for length/tone, and anti-spam checks.
  • Team sharing: shared target lists and collaboration inside a workspace.
Share this project:

Updates