跳到正文
DEV Community· Malay-dev·· 2 小時前AI 評分52

Malay-dev 打造 Clutch,以本地 Gemma 3 篩選社羣活動並同步至 Google Calendar

The Ticket Sold Out While I Was Lazyinhh... So I Built Clutch.

AI 導讀

Malay-dev 打造 Clutch,以本地 Gemma 3 為社羣活動評分,並將符合興趣的項目加入 Google Calendar。它監察 Discord、Luma、KonfHub、Hacktoberfest 和 RSS 共 5 個來源,涵蓋 330+ 個活動,並按截止時間以日曆顏色由藍轉橙再轉紅;過期活動會自動刪除。

正文

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady

What I Built

I missed GDG DevFest Bengaluru by one day. The announcement sat unread in my Discord (cause too much clutter and procrastination on reading all those) while the last ticket sold.

I don't need more notifications. I need something that knows what I can't afford to miss.

Clutch watches your communities — Discord, Luma, KonfHub, Hacktoberfest, RSS - scores every event against your interests using Gemma 3 locally, and puts only what matters on your Google Calendar with colors that escalate as deadlines approach.

330+ events. 5 sources. One calendar || feed || any form factor.

Gemma knows the difference

Profile: AI/ML, open source, hackathons, robotics, Bengaluru

[HIGH    ] 0.79  Build Agents with Omega (Bengaluru)
[HIGH    ] 0.77  Physical AI Demo Night (Bengaluru)
[HIGH    ] 0.76  Hacktober Hack (Bengaluru)
[INFO    ] 0.19  10 Tips for CSS Grid Layouts
[INFO    ] 0.05  Flower Bouquet Out Of Pipecleaners
[INFO    ] 0.05  Social dynamics of toxic metal in medieval Europe

A flower bouquet workshop never even reaches the model. Pre-filter catches it.

Calendar does the nagging

Google Calendar's native colors. No emojis. Time drives the escalation.

Time left Color Suffix
>7 days Blue —
3-7 days Orange [5d left]
<3 days Red [TOMORROW]
Past gone auto-deleted

Google Calendar showing Clutch Radar with orange and red color-coded events approaching their deadlines

The pipeline

Clutch architecture diagram showing connectors flowing through pre-filter and Gemma scoring to Google Calendar, backed by Tiger Data and Temporal

Connectors

Terminal output of clutch connectors command showing 5 auto-discovered plugins - discord, hacktoberfest, konfhub, luma, and rss

Source Events Auth
Luma 90 None
KonfHub 128 None
Hacktoberfest 80 None
RSS 32 None
Discord varies Bot token

Every connector is a standalone pip package. pip install and Clutch discovers it. We want the community to add Telegram, Slack, GitHub, Meetup — any source where opportunities hide in noise.

Escalation in action

Terminal output of clutch escalate showing time-based color changes - red for expired and today, orange for events 4 days away

The radar

Terminal output of clutch radar showing a priority table with 20 scored events sorted by relevance

Temporal workflow

Temporal UI showing the Clutch one-shot workflow with 6 completed activities - fetch, dedup, score, persist, and calendar sync

Code

Clutch

The AI that won't let you miss what matters.

Clutch is a local-first AI agent that monitors your communities — Discord, Luma, KonfHub, Hacktoberfest, RSS — scores every event against your interest profile using Gemma 3, and puts what matters on your Google Calendar with escalating color-coded reminders.

How It Works

5 Connectors (330+ events)
  -> Pre-filter (keyword match, drops obvious noise)
  -> Gemma 3 scoring (interest, urgency, scarcity, impact)
  -> Google Calendar (time-based color escalation)
  -> Temporal (durable 4h cycle, survives restarts)

Events start blue on your calendar. As deadlines approach, they turn orange, then red. Past events are auto-deleted. You never configure this — time does it.

Quick Start

# Prerequisites: Python 3.12+, Ollama with gemma3:4b, Podman (optional)
ollama pull gemma3:4b
# Clone and install
git clone https://github.com/Malay-dev/clutch.git
cd clutch
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
uv pip install -e connectors/rss

…

How I Built It

Gemma 3 4B via Ollama — local inference, no cloud. Four-dimension scoring (interest, urgency, scarcity, impact) as structured JSON. Batch mode, 5 events per LLM call. Pre-filter drops noise before the model sees anything.

The prompt does the heavy lifting — it checks attending eligibility (same city? online? worth traveling?), penalizes expired events, and scores conservatively. Most things are noise. Only what you can realistically act on gets through.

Scoring guide baked into the prompt:
- Generic blog post: 0.1-0.2
- Hackathon in your city matching interests: 0.8+
- Great topic but wrong city: 0.2-0.4 (unless online)
- Online workshop matching interests: 0.6-0.8
- Expired event: urgency 0.0 regardless of topic

Temporal — 6-activity durable workflow. Connectors fetch in parallel. If one fails, the rest proceed. 4-hour durable timer survives restarts. Every activity visible in the Temporal UI. - Durable code, best observability, native OSS

Google Calendar API — native color IDs, time-based escalation, triple dedup (in-memory + SQLite + Calendar-side), capped at 10 active events. (Google here, but any calendar app with API support could be used)

pgvector (Tiger Data) — Temporal persistence backend + future interest graph. - all in one

Podman — full stack in containers. Ollama native on host for GPU.

Your interest profile is a YAML file. Your data stays on your machine. The model runs on your hardware. That's the whole point.

Why Does Open Innovation Matter?

Clutch monitors your Discord messages, your event feeds, your community channels. That is attention data. With Gemma running locally, none of it leaves your machine.

A closed API would mean every community message gets shipped somewhere you don't control. Open weight means offline, on a plane, behind a firewall. Swap the model whenever — Gemma today, Llama tomorrow.

The Lazy Payoff

Before: 6 Discord servers, 3 Telegram groups, Luma, KonfHub, RSS. Checked manually. Usually too late.

After: I check my calendar.

I used Clutch this week to track this hackathon's own deadline. It worked.

Ship your own

Here's the thing — don't run this on your MacBook while you work. Deploy it on a Raspberry Pi, an old laptop, any machine gathering dust. Let it run 24/7 as your personal attention server. Gemma runs slow on a Pi — ~30s per event instead of 4. But for a 4-hour cycle, that's fine. Slow and steady is literally the point.

We move fast. The tech world moves faster. Conferences sell out. CFPs close quietly. Hackathon deadlines pass while you're "going to get to it."

Don't just read about it. Deploy it. Level up.

Set it up once. Forget about it. Your calendar fills itself with what matters. Opportunities stop slipping through the cracks while you're busy shipping code or, you know, lazying.

Prize Categories

Gemma — Core scoring engine. Local inference, batch mode, structured output. 100+ events per cycle on consumer hardware. #Gemma

Temporal — 6-activity workflow. Parallel fetches, retries, durable timers, full UI observability. #Temporal

Tiger Data — pgvector as Temporal backend and interest graph store. #Tiger

來源:DEV Community · dev.to