Avalanche Team 1 × foundry Start-Up In a Weekend Hackathon 2025 — First Prize, Hybrid Intelligence Track.
Franklink is an AI professional-networking concierge that lives inside iMessage. Users talk to Frank the way they'd text a friend; Frank understands what they need, matches them with other users who can help, and drops them into a small group chat where he keeps the collaboration moving.
It's the first chat that becomes your startup. The first chat where interview questions actually get shared. The first chat with the people grinding finals with you at 2 a.m.
| Capability | What users experience | How it works |
|---|---|---|
| Need & value matching | "I need someone who's shipped a Next.js app" → Frank introduces you to one. | A two-tier LLM pipeline extracts demands and offerings from every message, embeds them, and matches against other users' profiles. |
| Email-context intelligence | Frank knows you're going to an AI conference because your ticket email said so. | Read-only Gmail signals via Composio are summarized into searchable highlights and stored alongside each user's profile. |
| Location-aware introductions | "Anyone near Berkeley this weekend?" actually finds people near you. | Handles + coordinates are resolved per-user; the matcher weighs distance as a ranking feature. |
| AI-seeded group chats | Frank creates a three-way chat with a tailored icebreaker already written. | Once both users accept, Frank provisions a group, generates a context-rich opener, and stays in the chat to nudge, summarize, and follow up. |
| Proactive outreach | Frank circles back a day later to check in, never feels spammy. | Background workers reason over unresolved connections and inactivity windows and decide whether a follow-up adds value. |
Two LangGraph agents, a stateless orchestrator, and a handful of background workers.
iMessage ──► Photon webhook ──► FastAPI ──► Orchestrator
│
├─► InteractionAgent (conductor — routes intent, drafts payloads)
│ │
│ └─► ExecutionAgent (worker — validates and executes tools)
│
├─► Supabase (users, conversations, matches, group chats)
├─► Zep (long-term memory + semantic signals)
├─► Redis (idempotency, rate-limit, job queue)
└─► Azure OpenAI
Flows active in the router:
- Onboarding — name → school → career interests, with Photon reactions and contact-card exchange
- Networking — match candidates on need / value / location, confirm with initiator, invite target, seed group chat
- Recommendation — books, videos, and resources from a curated catalog, ranked against Zep memory
- General — casual chat with fast-path acknowledgements when no deeper action is required
See docs/ARCHITECTURE.md for the longer version and docs/FRANK_SYSTEM_PROMPT.md for Frank's full persona and mode system.
- Runtime: Python 3.11, FastAPI, Uvicorn, Supervisor (background workers)
- Agents: LangGraph (no checkpoints — stateless per turn, state rebuilt from DB + webhook)
- Models: Azure OpenAI (
gpt-5-minifor interaction and reasoning) - Data: Supabase (Postgres + pgvector), Zep, Redis
- Messaging: Photon iMessage bridge
- Integrations: Composio (Gmail), Stripe (helpers retained), BrightData / Scrapingdog (optional LinkedIn enrichment)
Prerequisites: Python 3.11+, Docker (optional), a Supabase project, an Azure OpenAI deployment, a Photon account, and a Zep workspace.
git clone https://github.com/<you>/Franklink-iMessage.git
cd Franklink-iMessage
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# ↑ fill in Azure OpenAI, Supabase, Redis, Photon, Zep, Composio (others optional)
# Apply the database schema (see db/MIGRATION_ORDER.md for the correct order)
psql "$POSTGRES_CONNECTION_STRING" -f db/schema/user_profiles_table.sql
# … repeat for every file listed in db/MIGRATION_ORDER.md
uvicorn app.main:app --reloadDocker Compose is also provided:
docker compose up --buildapp/ FastAPI app, agents, tools, integrations, workers
db/
MIGRATION_ORDER.md Run these SQL files in this order on a fresh DB
schema/ Supabase schema and RPC definitions
docs/
ARCHITECTURE.md LangGraph flow overview
EMAIL_EXTRACTION.md Composio-based Gmail extraction pipeline
FRANK_SYSTEM_PROMPT.md Frank's persona and mode system
UPDATE_TASK.md Update flow ("dumb executor" pattern)
infrastructure/
supervisor/ Supervisord config for the container
scripts/ One-off operational scripts (Zep migrations, query experiments)
tests/ Pytest suite (group chat, location flow, etc.)
pytest # run the test suite
pytest tests/groupchat # scope to one packageIf you believe you've found a vulnerability, please do not open a public issue. See SECURITY.md for how to report it privately.
Contributions are welcome — please read CONTRIBUTING.md first. All contributors are expected to follow the Code of Conduct.
MIT © Franklink