The Problem: "Dumb" Contacts
You meet (or re-discover) interesting people on LinkedIn, but your Google Contacts are "dumb." They just store a name and an email. When you see a name, you have no context of who they are or why they're there.
Our Solution: The "AI-Memory"
Link3d-Memory solves this by turning Google Contacts into a lightweight, intelligent "memory" CRM.
When you're on a LinkedIn profile, our extension:
- Scrapes the profile's Name, Title, and "About" section.
- Uses
chrome.ai(Gemini Nano) to instantly create a one-sentence AI summary of their bio. - Searches your Google Contacts via the People API to see if they exist.
- Saves that "memory" (and the profile URL) to the contact's "Notes" field, either by creating a new contact or updating an existing one.
How We Built It (The "Rebel" Architecture)
Our system is a "responsible rebel" architecture built on Chrome's latest tech:
l3_analyzer_agent.js(The "Brain"): This is our main service worker. It coordinates everything. It fields requests from the popup, calls the scraper, runs the AI, and handles the Google API logic.l3_extractor.js(The "Robot"): This script is injected into the LinkedIn page to find and extract the raw text data.chrome.ai(Gemini Nano): The star of the show. We use the built-in, on-devicecreateTextSessionto generate the AI summary instantly and privately. We also built a fallback to the full Gemini API just in case.chrome.identity& Google People API: We use this for secure, seamless Google OAuth2 to search, create, and update contacts.popup.js&popup.html(The "Storefront"): A clean, simple UI that reacts to messages from the "brain" to show states like "Loading," "Auth Required," or "Success".
Our "Rebel's Bug Hunt" (Challenges)
We didn't just build this; we went on an epic bug hunt. Our main challenges were:
- The "Google Maze" Bug: Realizing we needed to install the broken extension first to get its 32-letter ID, just so we could get the
client_idfrom Google Cloud to fix the extension. - The "Flag" Bug: Discovering that
chrome.aididn't just need Chrome Dev, but also a specific flag (chrome://flags) to be enabled. - The "Invalid Scope" Bug: We spent hours debugging auth, only to find a typo (
httpSa://) in ourmanifest.jsonscopes. - The "Broken Comms" Bug: Our biggest lesson! We had to re-wire all three core JS files (
popup.js,l3_analyzer_agent.js,l3_extractor.js) to use one unifiedchrome.runtime.sendMessagesystem to talk to each other.
Built With
- chrome-service-worker
- chrome.ai-(gemini-nano)
- chrome.identity-api
- gemini
- google-people-api
- javascript-(esm)
Log in or sign up for Devpost to join the conversation.