Commit graph

16 commits

Author SHA1 Message Date
Adam Moussa
510834533b Add work order and purchase order lookups to Bedrock agent instructions
The agent's system prompt and KB description didn't mention WO/PO data,
so it refused queries even though the data was already in the knowledge base.
2026-04-13 17:05:26 -04:00
Adam Moussa
8c71d8267c docs: update README for PO and work order KB syncs
ref #4 — documents the new po-sync and workorder-sync Lambdas,
EventBridge schedules, DynamoDB data sources, and manual trigger
instructions.
2026-04-13 15:42:27 -04:00
Adam Moussa
1dc275dee4
Merge pull request #7 from Sea-Haven-Industries/feature/workorder-kb-sync
feat: work orders → Bedrock KB sync
2026-04-13 15:38:20 -04:00
Adam Moussa
40216430c6 Merge master after PO sync PR merge 2026-04-13 15:38:13 -04:00
Adam Moussa
50d5c3cc81
Merge pull request #6 from Sea-Haven-Industries/feature/po-kb-sync
Tested: 9,279 POs synced, 0 failures, KB ingestion clean
2026-04-13 15:37:29 -04:00
Adam Moussa
641494530b fix: concurrent uploads and overwrite-in-place sync strategy
- Upload S3 files 10x concurrently instead of sequentially
- Replace clear-then-write with overwrite-in-place + delete stale
  to avoid S3 404s during concurrent KB ingestion jobs
2026-04-13 15:36:16 -04:00
Adam Moussa
adbe19aa16 fix: concurrent uploads, overwrite-in-place, 15min timeout
- Bump Lambda timeout from 5min to 15min (9k+ POs need more time)
- Upload S3 files 25x concurrently instead of sequentially
- Replace clear-then-write with overwrite-in-place + delete stale
  to avoid S3 404s during concurrent KB ingestion jobs
2026-04-13 15:36:07 -04:00
Adam Moussa
7240147736 feat: daily work orders DynamoDB → Bedrock KB sync
Add a new Lambda and CDK construct that scans the WorkOrders and
WorkOrderComments DynamoDB tables (owned by workorder-ingest),
converts each work order + comment history to markdown, uploads
to S3 under the work-orders/ prefix, and triggers a Bedrock
Knowledge Base ingestion job. Runs daily at 02:00 UTC via
EventBridge alongside the existing Notion sync.
2026-04-13 14:35:47 -04:00
Adam Moussa
615970eba2 feat: daily purchase-orders DynamoDB → Bedrock KB sync
Add a new Lambda and CDK construct that scans the purchase-orders
DynamoDB table (owned by po-ingest), converts each PO to markdown,
uploads to S3 under the purchase-orders/ prefix, and triggers a
Bedrock Knowledge Base ingestion job. Runs daily at 02:00 UTC via
EventBridge alongside the existing Notion sync.
2026-04-13 14:33:53 -04:00
2dba68c14d Merge feature/notion-kb-sync into master
Daily Notion → Bedrock KB sync: EventBridge cron triggers notion-sync
Lambda which exports Office Operations pages to S3 and kicks off KB
ingestion. Runs at 02:00 UTC. Refs #4
2026-04-13 00:01:44 -04:00
f254776ba6 docs: update README for Notion KB sync
Documents the notion-sync Lambda, daily EventBridge schedule, Notion
secret setup, and updated project structure.

Refs #4
2026-04-13 00:00:39 -04:00
8b18279023 feat: daily Notion → Bedrock KB sync
Adds a scheduled Lambda that pulls all pages from the Office Operations
Notion teamspace, converts them to markdown, uploads to the KB S3 bucket
under a notion/ prefix, and triggers a Bedrock ingestion job. Runs daily
at 02:00 UTC via EventBridge. Notion API key stored in Secrets Manager at
seahaven/notion/api-key (placeholder — fill in post-deploy).
2026-04-12 22:21:39 -04:00
Adam Moussa
505b624242 Add thinking placeholder and improve location parameter handling
- Post '_Sea Haven Assistant is thinking..._' immediately on receipt,
  then update the message with the real response (chat.update)
- Broaden Maps location parameter description so agent passes facility
  names like 'Amazon BFI9' directly to Google Maps rather than asking
  the user to provide a street address
2026-04-12 00:01:33 -04:00
Adam Moussa
635e712966 Switch to Claude Sonnet 4.5 cross-region inference profile
- Update foundation model to us.anthropic.claude-sonnet-4-5-20250929-v1:0
  (cross-region inference profile required for Claude 4.x on Bedrock Agents)
- Broaden agent role IAM policy to cover wildcard-region foundation model ARN
  and inference profile ARN
- Force alias version bump via description change so CloudFormation creates
  agent version 2 with the updated model
- Remove invalid includedType: 'contractor' from Google Maps Places API request
  (caused 400 Bad Request — not a valid place type for searchText endpoint)
2026-04-11 23:52:44 -04:00
Adam Moussa
f01c3f81ce Add README with architecture, deployment, and maintenance docs 2026-04-11 23:17:03 -04:00
Adam Moussa
f7e63e50c9 Initial scaffold: Bedrock-backed Slack DM bot
- CDK stack for Sea Haven Industries internal Slack assistant
- Bedrock Agent (Claude 3.5 Sonnet) with QBO + Google Maps action groups
- VectorKnowledgeBase via @cdklabs/generative-ai-cdk-constructs (AOSS + S3)
- Slack webhook/processor Lambdas with DM-only filtering
- API Gateway HTTP API on bot.seahaven.com
- DynamoDB conversation log with 90-day TTL
- Secrets Manager references for Slack, QBO OAuth, and Google Maps
2026-04-11 23:15:15 -04:00