Connectwork

Your LinkedIn network is a flat list of hundreds or thousands of names, and a list can't tell you who you're close to, who you've lost touch with, or who should meet whom. Connectwork turns that list into a living map, and gives you an AI agent that keeps it up to date.

You sit at the center of a ring map. Ring 1 is your closest people, Ring 2 is regular contacts, and Ring 3 is everyone else. People are colored by tag (Work, School, Friends, Family, Clubs) and clustered by sector. Links between them show how your world connects.

We incorporated Gemini to do all the maintenance work: Ask in plain English. "Who do I know at Microsoft?" highlights exactly those people on the map. Import and auto-sort. Drop in your LinkedIn Connections.csv and the agent proposes a ring and tags for every contact. Find hidden links. It spots connections you missed, like two people from the same school who both worked at the same company, labels the evidence and ranks the strongest matches first. Snap to add. Photograph a business card or upload a club roster and it turns into people on your map. Weekly review. One click returns up to six prioritized actions, such as reconnect with someone drifting, follow up on a reminder, or make an intro, each with a warm, specific draft message. Meeting prep. It reads your Google Calendar and gives you a brief on each attendee before you walk in. Text it. Ask "who do I know at Microsoft?", "met Sarah from Stripe" or "remind me to email John Friday" over iMessage, and Connectwork answers from your own open browser tab.

Nothing changes without you. Every AI suggestion appears in a review sheet where you accept or reject each item. You can also edit the map by hand: drag people between rings, or connect two people with the Connect tool.

How it's built: Connectwork is local-first. All your contacts live in your browser (IndexedDB via Dexie). A small stateless Hono server holds the API keys and nothing else. It has no database and doesn't log request bodies or message text.

Frontend: React, Vite and TypeScript, with Zustand, Tailwind and shadcn/ui. Motion uses CSS transitions and Framer Motion, and it turns off when your system asks for reduced motion. The map: a d3-force simulation (radial, collision, tag-sector and link forces) rendered as React SVG, with pan and zoom. Labels are placed in screen space so they don't collide. Drifting contacts sit further from the center and fade, and outer-ring contacts recede until you focus on them. AI: Gemini via @google/genai, behind seven endpoints (query, classify, links, weekly review, extract, draft, meeting brief), plus intent parsing for texts. The browser sends a compact text summary of the network rather than the whole database. Every response is schema-validated with Zod, and any person id the model invents is dropped. Deterministic first, AI second: The weekly review computes its candidates in code (due reminders, drift scores, pending links) and asks Gemini only to prioritize and write the copy. Texting agent: Photon's Spectrum SDK on iMessage. The server parses the text, relays it to your open Connectwork tab over Server-Sent Events, and the tab answers from its own IndexedDB. The server never holds your network. Only allow-listed numbers get a reply, and every reply is signed as AI. Integrations: Papa Parse for CSV import, the ics package for calendar export, and Google Calendar through an in-memory OAuth token. Reliability: A record/replay cache for model replies, with a client-side fallback, keeps the demo working through rate limits or bad Wi-Fi. Accessibility: a colorblind-safe Okabe-Ito palette, a list view that mirrors the map, keyboard navigation and screen-reader announcements. Color is never the only signal. Deployment: live over HTTPS through a Cloudflare tunnel, with a strict Content Security Policy and security headers. A Caddy and systemd config for a Vultr VM is ready in the repo.

Target solution The problem: Networking tools treat relationships as static records. Professional networks decay quietly because nothing shows who you've drifted from, and following up is tedious enough that it doesn't happen.

Who it's for: students and early-career professionals with hundreds of LinkedIn connections and no system for staying in touch, especially people building networks through clubs, career fairs and internships.

Our answer: make the network visible and make maintenance effortless. The map shows closeness and drift at a glance, and the agent turns that into a short, approvable list of actions each week. You can reach it wherever you are, even by text. Privacy is built in. Your data never leaves your browser except for the minimal summary sent with each AI request, and it uses LinkedIn's own CSV export, so there's no scraping.

Tracks Cook Smarter (title track): Connectwork is an AI agent and planning tool that takes the friction out of keeping a network alive. It turns "I should really reach out" into a weekly plan of drafted, one-click actions, and it does the busywork of sorting, linking and prepping for you.

MLH Best Use of Gemini API: Gemini powers every agent feature: plain-English questions, auto-sort, hidden-link discovery, business-card and roster extraction, the weekly review, drafts, meeting briefs and text-message intent parsing. All of it uses structured output validated with Zod.

Built With

Share this project:

Updates

Submission history