TinkerUp User Guide
How to use TinkerMem, TinkerMeet, and the unified dashboard.
Overview
TinkerUp is a team-memory platform. Two modules work standalone or together:
Listen → Capture → Decay → Act
Bot listens to Slack + meetings, captures into the graph, decays outdated context automatically, and surfaces relevant memory on demand.
Quick Start
- Run only TinkerMeet (record + MoM, no memory)Start
tinkermeet/backend+tinkermeet/frontend. Record audio in the browser, download or post MoM. No Slack or DB needed beyond what TinkerMeet ships. - Run only TinkerMem (Slack memory, no meetings)Set up Slack app + Google Drive service account + Neon Postgres. Run
cd tinkermem && docker compose up -d --build. Bot listens to allowed channels. - Run combined (full team memory)Both modules + dashboard. TinkerMeet pushes MoM to TinkerMem; queries see Slack + meetings in one memory graph.
Module Choice
Pick by need, not by default. Each module is independent.
Slack Integration (TinkerMem)
TinkerMem connects to Slack via Socket Mode — outbound-only WebSocket. No public URL or inbound rules needed — runs fine in a private VPC.
What gets ingested
- Every message in allowed channels (
SLACK_CHANNEL_IDSenv) - Google Drive links (auto-extracted via service account)
- Slack file attachments (docx/pdf/xlsx/etc — needs
files:readscope) - Emoji reactions on bot answers — used for feedback (👍/👎)
Setup steps
- Create a Slack appapi.slack.com/apps → New App → From scratch → enable Socket Mode → generate app-level token.
- Add Bot Token Scopes
app_mentions:read, channels:history, channels:read, chat:write, commands, files:read, users:read, reactions:read - Register slash commands
/ask,/backfill,/recall,/correct,/usage(placeholder URL is fine — Socket Mode skips it). - Install + invite botInstall app to workspace, copy Bot Token (xoxb-) into
.env. In channel:/invite @YourBot. - Backfill existing historyIn the channel, run
/backfillto pull entire history into memory.
Meeting Recording (TinkerMeet)
Record + transcribe + generate MoM in the browser.
- Start the meet UI
cd tinkermeet/frontend && npm run dev. Open in browser, grant microphone permission. - Record audioClick Record. Audio streams over WebSocket to backend → OpenAI gpt-4o-transcribe.
- Get auto-MoMWhen you stop recording, the bot sends transcript to Bedrock Haiku for MoM generation (decisions + action items + open questions).
- Optional: post to SlackSet
SLACK_MOM_CHANNELin tinkermeet/.env. MoM auto-posts after generation.
tinkermem/api/usage if you set TINKERMEM_API_URL. See it in the Cost Tracker.Projects & Scoping
Projects are optional groupings. By default everything is standalone (independent). Assigning a Slack channel to a project gives you scoped queries — no cross-project leakage.
Rules
- Channel → project mapping is mutable. Reassigning affects future messages only.
- Each
raw_messagerecords the project at INSERT time — immutable after. - Query with
project_id→ strictWHERE project_id = $Xacross all retrieval paths. - NULL
project_id= standalone. Standalone messages do not appear in project-scoped queries.
Manage projects
Go to /projects on the dashboard: create projects, assign Slack channels, see channel and message counts per project.
Memory Graph
Three tiers, each with confidence + temporal decay.
Why temporal decay matters
Each node has a confidence_scorethat decreases with age + conflicting newer context. Below threshold → filtered out of retrieval. Notion/Confluence don't have this — pages rot silently. Otter/Fireflies don't either — transcripts sit flat in folders.
File Extraction
Two ingestion paths, both end in file_chunks table for vector RAG.
Slack file uploads
Files dragged into a channel are downloaded via files.info + url_private_download (needs files:read scope). Supports docx, pdf, xlsx, html, md, jsx, and more.
Google Drive links
Drive URLs in chat are detected via regex, then content is exported via the Google Drive API. Requires sharing the file (or parent folder) with the service account email— the SA doesn't inherit creator permissions.
RAG flow
Each chunk is prepended with metadata (uploader + file name) before embedding so queries like "what did Nita send?" match by author.
Slash Commands & Mention
Web Chat
Same query engine, different UI. Open /chat on the dashboard. Optionally enter a Channel ID to auto-resolve project scope.
Cost Tracker
Open /costs for centralized LLM usage:
- Pie chart — cost contribution per model
- Bar chart — input vs output tokens per model
- Breakdown table — provider, model, calls, tokens, cost
- Period selector — today, 7d, 30d, all
Tinkermem logs internally; TinkerMeet POSTs to tinkermem/api/usage after each OpenAI/Bedrock call.
Quick Reference
Ports
Routes
Common gotchas
docker compose up -d --build after env changes. restart just sends a signal — env stays cached.BadZipFile on docx parse./ask, only the first-installed wins. Uninstall the other or rename commands.