This commit is contained in:
KS Jannette
2026-02-20 14:12:41 -05:00
parent 065645983a
commit f3cf4a51bd

View File

@@ -14,7 +14,7 @@ Wanna cut the crap and get the good stuff into Jira, calendars, sheets, etc. ...
### Declawed is a configurable, prompt purrr-fectable LLM mail management assisty-kitty. ### Declawed is a configurable, prompt purrr-fectable LLM mail management assisty-kitty.
### More private than most other options (not purrfect yet - but we aim to get there). ### More private than most other options (not purrfect yet - but we aim to get there).
### More accurate actions/results (read on). ### More accurate actions/results (read on).
### Eliminates that frustrating feeling you'll never get the dandlging, catnip-stuffed mouse you've been leaping at. ### Eliminates that frustrating feeling you'll never get the dangling, catnip-stuffed mouse you've been leaping at.
# Privacy: more than the blue-plate crustacean # Privacy: more than the blue-plate crustacean
@@ -29,25 +29,25 @@ Avoid flakey (molty?) black box installs, billed as QUICK AND EASY!
# Simplicity # Simplicity
### NLP prompts are **actually** easy and **demonstrably** more effective ### NLP prompts are **actually** easy and **demonstrably** more effective
Stop drilling down byzantine menus in mail, scehduling and sheets platformsto 1. configure filters that only ever work 20% of the time 2. change in functionality and scope every three months. Stop drilling down byzantine menus in mail, scheduling and sheets platforms to 1. configure filters that only ever work 20% of the time 2. change in functionality and scope every three months.
Write simple, declarative prompts instead. It's like wrapping bulk-mail's paws in tin foil and tossing them in a bathtub. Write simple, declarative prompts instead. It's like wrapping bulk-mail's paws in tin foil and tossing them in a bathtub.
Prompts Prompts
1. Use semantic grouping, organizing by message intent, purpose, and context. 1. Use semantic grouping, organizing by message intent, purpose, and context.
2. The prompt templates in our "built in" library are evaluated using, for exmaple, cosine similarity scoring and ROUGE scoring... 2. The prompt templates in our "built in" library are evaluated using, for example, cosine similarity scoring and ROUGE scoring...
3. Basically, we watch the watchers to max analyzational effectiveness in and correct choice of derlegated actions. 3. Basically, we watch the watchers to max effective choice of delegated actions.
3. An example: keep the gold, toss the junk when reviewing, for example, forums where actionable insights are gold, but only 10% of the signal. 3. An example: keep the gold, toss the junk when reviewing, for example, forums where actionable insights are gold, but only 10% of the signal.
### Prompting: easliy configured to cron: cleaning the litter(in)box before the stank wafts into the kitchen. ### Prompting: easily configured to cron: cleaning the litter(in)box before the stank wafts into the kitchen.
### Image morning greeting you with the fresh, spring-meadow aroma of opportunities and insights -- not an avalanche of turds ### Image morning greeting you with the fresh, spring-meadow aroma of opportunities and insights -- not an avalanche of turds
# -- you just might feel like its f*cxing 1998 again. # -- you just might feel like its f*cxing 1998 again.
# Wiring up your kitty # Wiring up your kitty
Assisty-kitty easily interfaces with mail and calendar and other app APIs (about any other service you want to plug in) ... it keeps things moving so you can go you chase laseer pointers or enjoy a 19-hour nap in a sunbeam. Assisty-kitty easily interfaces with mail and calendar and other app APIs (about any other service you want to plug in) ... it keeps things moving so you can go chase laser pointers or enjoy a 19-hour nap in a sunbeam.
--- ---
@@ -62,7 +62,7 @@ Assisty-kitty easily interfaces with mail and calendar and other app APIs (about
## Coming soonish: ## Coming soonish:
-- Proprietary custom UI. -- Proprietary custom UI.
-- Support for Hugging Face models galore. -- Support for Hugging Face models galore.
-- Supposrt for wiring to local LLMs. - Support for wiring to local LLMs.
# Setup # Setup
@@ -132,14 +132,14 @@ Create file `accounts.json` in the project root. Each key is an account alias wi
```json ```json
{ {
"work": { "work": {
"label": "you@yourdomain.com", "label": "you@yourdomain.com",
"tokenFile": "token.json", "tokenFile": "token.json",
"spreadsheetId": "YOUR_GOOGLE_SHEET_ID", "spreadsheetId": "YOUR_GOOGLE_SHEET_ID",
"calendarId": "primary" "calendarId": "primary"
}, },
"secondary": { "secondary": {
"label": "you@gmail.com", "label": "you@gmail.com",
"tokenFile": "token-secondary.json" "tokenFile": "token-secondary.json"
} }
} }
``` ```
@@ -202,12 +202,12 @@ Add the server:
```json ```json
{ {
"mcpServers": { "mcpServers": {
"assistant": { "assistant": {
"command": "/ABSOLUTE/PATH/TO/node", "command": "/ABSOLUTE/PATH/TO/node",
"args": [ "args": [
"/ABSOLUTE/PATH/TO/deClawed-Assity-Kitty/build/index.js" "/ABSOLUTE/PATH/TO/deClawed-Assity-Kitty/build/index.js"
] ]
} }
} }
} }
``` ```
@@ -231,15 +231,15 @@ The structure looks like this (the example file ships with empty values):
```json ```json
{ {
"installed": { "installed": {
"client_id": "", "client_id": "",
"project_id": "", "project_id": "",
"auth_uri": "https://accounts.google.com/o/oauth2/auth", "auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token", "token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "", "client_secret": "",
"redirect_uris": ["http://localhost"] "redirect_uris": ["http://localhost"]
} }
} }
``` ```
@@ -354,6 +354,14 @@ deClawed-Assity-Kitty/
│ ├── tools-email.ts # fetch, delete, append_to_summary │ ├── tools-email.ts # fetch, delete, append_to_summary
│ ├── tools-calendar.ts # create_calendar_event │ ├── tools-calendar.ts # create_calendar_event
│ └── tools-spreadsheet.ts # log_recruiter_contact │ └── tools-spreadsheet.ts # log_recruiter_contact
├── accountsAndCredentials/
│ ├── accounts.json # Multi-account configuration (gitignored)
│ ├── accounts.example.json # Template for accounts.json
│ ├── credentials.json # Google OAuth client credentials (gitignored)
│ ├── credentials.example.json # Template for credentials.json
│ ├── token.json # OAuth token -- work account (gitignored, auto-generated)
│ ├── token-secondary.json # OAuth token -- secondary account (gitignored, auto-generated)
│ └── token.example.json # Template showing token structure
├── test/ ├── test/
│ ├── fixtures/ │ ├── fixtures/
│ │ └── mock-emails.ts # Mock Gmail API responses │ │ └── mock-emails.ts # Mock Gmail API responses
@@ -361,13 +369,14 @@ deClawed-Assity-Kitty/
│ │ └── email-workflow.test.ts # Integration tests │ │ └── email-workflow.test.ts # Integration tests
│ └── unit/ │ └── unit/
│ └── email-parsing.test.ts # Unit tests for parsing helpers │ └── email-parsing.test.ts # Unit tests for parsing helpers
├── mailSummaries/ # Per-account summary output (auto-generated) ├── mailSummaries/ # Per-account summary output (gitignored, auto-generated)
├── build/ # Compiled JS (auto-generated) ├── build/ # Compiled JS (auto-generated)
├── accounts.json # Multi-account configuration ├── assets/
├── credentials.json # Google OAuth client credentials │ └── logo.png # Project logo
├── token*.json # Per-account OAuth tokens (auto-generated)
├── package.json ├── package.json
├── tsconfig.json ├── tsconfig.json
├── vitest.config.ts ├── vitest.config.ts
├── .gitignore
└── README.md └── README.md
``` ```