Skip to content

Commit fc744bb

Browse files
pratikbuildscursoragent
authored andcommitted
Document Slack internal processing setup
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent b2cea9d commit fc744bb

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# slack-internal-processing
2+
3+
A Slack thread workflow that turns an uploaded call transcript into a structured
4+
digest with a two-step Corbits workflow:
5+
6+
@app mention → upload transcript.txt → summarize → extract → Slack digest thread
7+
8+
The thread collects a full `.txt` transcript; its filename becomes the call title. The summarize step
9+
produces a concise summary and discussion points. The extract step identifies
10+
companies and discrete claims. Every status and digest card stays in the
11+
original mention thread.
12+
13+
This is a deliberately small example adapted from Scout's
14+
internal-processing workflow. It does not include Granola ingestion, the Scout
15+
knowledge database, artifacts, fact checking, PDFs, or run-diligence actions.
16+
17+
## Setup
18+
19+
1. Clone the repository with submodules and install this starter:
20+
21+
git clone --recurse-submodules https://github.com/corbitsdev/examples.git
22+
cd examples/starter/slack-internal-processing
23+
bun install
24+
cp .env.example .env
25+
26+
In an existing checkout, initialize the shared Corbits Tag dependency from
27+
the repository root:
28+
29+
git submodule update --init --recursive starter/slack-agent/vendor/corbits-tag
30+
31+
2. Expose port 3001 through an HTTPS tunnel.
32+
33+
3. Replace every placeholder URL in manifest.slack.json with:
34+
35+
https://your-public-tunnel.example/api/tag/slack/webhook
36+
37+
4. Create or update a Slack app from manifest.slack.json and reinstall it.
38+
The webhook receives mentions and subscribed thread replies.
39+
40+
5. Set SLACK_SIGNING_SECRET, SLACK_BOT_TOKEN, and one inference provider key
41+
in .env.
42+
43+
6. Start the service:
44+
45+
bun run start
46+
47+
## Use it
48+
49+
1. In a Slack channel, mention the app:
50+
51+
@corbits-internal-processing create a digest
52+
53+
2. In the thread the bot opens, upload the full transcript as a UTF-8 `.txt`
54+
file. There is no modal input limit. Its filename becomes the title:
55+
56+
acme-investor-call.txt
57+
58+
3. The bot posts "Call digest started" and then the structured digest in that
59+
same thread. Re-mention the app to run another digest after the thread
60+
unsubscribes.
61+
62+
## Verify locally
63+
64+
bun run typecheck
65+
bun test
66+
bun build src/cli.ts --target=bun --outdir /tmp/slack-internal-processing-build
67+
68+
## Files
69+
70+
| Path | Purpose |
71+
| --- | --- |
72+
| src/cli.ts | Corbits Tag mount and thread-reply intake handlers |
73+
| src/session.ts | Slack-thread lifecycle and workflow run |
74+
| src/workflow.ts | summarize → extract definition and real step invoker |
75+
| src/parser.ts | Strict validation of the extracted digest |
76+
| src/cards.ts | Status and final digest cards |
77+
| manifest.slack.json | Slack events and scopes |
78+
| ../slack-agent/vendor/corbits-tag | Shared pinned Corbits Tag workspace |

0 commit comments

Comments
 (0)