← Back to Projects

TrendLink

Live

Mar 2026 – May 2026 · 2 months

TrendLink screenshot

TrendLink runs a 4-step LangGraph pipeline on ECS Fargate every evening at 8 PM: it fetches trending IT/tech news via Tavily, uses Claude (via AWS Bedrock) to filter for the most relevant article and generate a polished LinkedIn post, then publishes it automatically — or saves it as a draft in dry-run mode. A React + Vite frontend on Vercel lets users view post history, tweak settings, and trigger manual runs, with all API calls secured through Cognito M2M (client_credentials) JWT authorization on an HTTP API Gateway. The entire infrastructure is managed with Terraform across three modules (api, pipeline, storage), running inside a custom VPC with private subnets and a DynamoDB Gateway Endpoint to keep database traffic off the public internet.

Design Decisions

Chosen ECS Fargate over Lambda for the LangGraph pipeline because multi-step LLM chains exceed Lambda's 15-minute timeout and benefit from persistent in-memory state across graph nodes; EventBridge handles scheduling instead of keeping the container running idle.

Highlights

Timeline

Mar 2026Started
Mar 2026Initial LangGraph pipeline + DynamoDB architecture
Apr 2026Vercel API proxy layer + frontend deployed
May 2026Cognito M2M auth + custom VPC + DynamoDB gateway endpoint
May 2026Completed

AI / LLM

claude-sonnet

Infrastructure

aws-lambdaecsdynamodbapi-gatewayecrs3iacvercel

Auth

cognito

Other

langgraph

Tech Stack

PythonTypeScriptReactLangGraphTerraform

Metrics

4 Lambda functions + 3 DynamoDB tables + 3 SSM secrets

4-step LangGraph pipeline (fetch → filter → generate → publish)

Architecture

USER INTERFACE COMPUTE STORAGE EXTERNAL Browser User (React SPA) Vercel React + API fns Cognito M2M JWT Issuer API Gateway HTTP API v2 JWT Authorizer EventBridge cron: 8 PM daily Lambda ×4 history · settings · trigger · preview Python 3.12 · ECR container Rate-limited · DynamoDB CRUD ECS Fargate LangGraph Pipeline fetch → filter → generate → post Claude via Bedrock · Docker/ECR Private subnet · VPC DynamoDB posts settings rate_limits SSM Parameter Store 🔑 tavily-api-key 🔑 anthropic-api-key 🔑 linkedin-token SecureString · 3 secrets Tavily API Trending news search AWS Bedrock Claude Sonnet (alt: Anthropic API) LinkedIn API UGC Posts · OAuth 2.0 loads SPA REST (HTTPS) get M2M token JWT routes CRUD RunTask cron 8 PM read/write secrets news search LLM call post (dry-run)
Live Demo ↗