Morning Signal is a source-grounded agent starter kit for turning live web signals into actionable intelligence briefs.
It demonstrates a reusable pattern for production AI agents:
live web signal -> structured evidence -> grounded synthesis -> business action
The included app generates a GTM intelligence brief, but the same architecture can be adapted for competitive intelligence, recruiting signals, market research, pricing monitors, docs-change tracking, financial monitoring, and other workflows where current public web data matters.
The public prototype runs in demo mode, so it does not require live Nimble or OpenAI credentials.
Most LLM workflows are only as good as the context they receive. If the world changed this morning, a model’s memory will not know. Search results alone are also not enough: serious agents need source links, extracted content, metadata, typed outputs, and a repeatable workflow.
Morning Signal shows how to gather evidence before asking the model to reason.
Company URL
-> human-approved context
-> LangGraph planner
-> Nimble Search
-> Nimble Extract
-> evidence packet
-> OpenAI synthesis
-> inspectable brief
The app walks through a four-screen workflow:
The final brief includes:
Install dependencies:
npm install
Create a local environment file:
cp .env.example .env
For a safe first run with no external API calls, set:
DEMO_MODE=true
Run the app:
npm run dev -- -p 3001
Open:
http://localhost:3001
The Part 1 keynote deck is a static HTML keynote served by the Next app.
Open this exact URL (server must be running):
http://localhost:3001/slides/index.html
Step-by-step:
npm run dev -- -H 0.0.0.0 -p 3001Readyhttp://localhost:3001/http://localhost:3001/slides/index.html→ / ← to move slides; F for fullscreenAlso available: /deck (redirects to the same file).
Speaker notes and timing: docs/presentation/SPEAKER_NOTES.md
Talk outline: docs/TALK_OUTLINE.md
Demo video path: public/slides/demo.mp4
In demo mode, use:
https://www.nimbleway.com
Demo mode intentionally uses deterministic fixture data. It is designed for public demos, screenshots, and local evaluation without secrets.
To run against real providers, set:
DEMO_MODE=false
NIMBLE_API_KEY=your_nimble_key
OPENAI_API_KEY=your_openai_key
Optional:
NIMBLE_BASE_URL=https://sdk.nimbleway.com/v1
OPENAI_MODEL=gpt-4.1-mini
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=your_langsmith_key
LANGSMITH_PROJECT=nimble-gtm-signal-agent
With live mode enabled, the app can research public HTTP/HTTPS company websites, call Nimble Search and Extract, and synthesize the brief with OpenAI.
Email delivery is optional and uses Resend.
RESEND_API_KEY=your_resend_key
NEWSLETTER_FROM="Morning Signal <onboarding@resend.dev>"
NEWSLETTER_TO=you@example.com
NEWSLETTER_ALLOWED_RECIPIENTS=you@example.com
The app only sends to the configured allowlist. This keeps demos from becoming an accidental open email relay.
app/page.tsx - product UI and agent workflow statesapp/api/company/route.ts - company profile discovery endpointapp/api/brief/route.ts - non-streaming brief generation endpointapp/api/brief/stream/route.ts - streaming agent progress endpointlib/agent.ts - LangGraph planning, search, extract, evidence, and synthesis graphlib/nimble.ts - Nimble Search/Extract integration and demo fixtureslib/llm.ts - OpenAI synthesis and structured newsletter generationlib/types.ts - Zod schemas and TypeScript typeslib/store.ts - local SQLite persistencelib/email.ts - optional newsletter deliveryRead docs/ARCHITECTURE.md for the full system walkthrough.
The short version:
Morning Signal is intentionally domain-light. The same pattern can become:
Read docs/ADAPT_THIS_AGENT.md for extension patterns.
Before using this pattern in production, plan for:
Read docs/PRODUCTION_GUIDE.md and docs/EVALUATION.md.
.env or provider secrets..vercelignore excludes local env files, build caches, local databases, and
presentation artifacts from Vercel uploads.Read SECURITY.md for more detail.
npm run typecheck
npm run build
npm audit --omit=dev
npm run dev
This project began as a Nimble Principal Developer Advocate assignment demo. The public version is framed as a reusable reference implementation for developers building source-grounded agents with live web data.