https://github.com/spy4x/offer-lens
OfferLens — Media Buyer's AI Co-Pilot. Analyze any landing page in 3 seconds. Get angles, hooks, ad copy, email/SMS angles, and competitive intel. Chrome Extension + Web App + MCP Server. Built for It's Today Media Build Challenge 2026.
https://github.com/spy4x/offer-lens
affiliate-marketing ai-copilot chrome-extension deepseek deno hono landing-page landing-page-analysis llm marketing mcp mcp-server media-buying monorepo preact
Last synced: 2 days ago
JSON representation
OfferLens — Media Buyer's AI Co-Pilot. Analyze any landing page in 3 seconds. Get angles, hooks, ad copy, email/SMS angles, and competitive intel. Chrome Extension + Web App + MCP Server. Built for It's Today Media Build Challenge 2026.
- Host: GitHub
- URL: https://github.com/spy4x/offer-lens
- Owner: spy4x
- License: mit
- Created: 2026-07-03T12:39:09.000Z (4 days ago)
- Default Branch: main
- Last Pushed: 2026-07-03T16:24:25.000Z (3 days ago)
- Last Synced: 2026-07-03T16:25:07.292Z (3 days ago)
- Topics: affiliate-marketing, ai-copilot, chrome-extension, deepseek, deno, hono, landing-page, landing-page-analysis, llm, marketing, mcp, mcp-server, media-buying, monorepo, preact
- Language: TypeScript
- Homepage: https://offer-lens.antonshubin.com
- Size: 91.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# OfferLens — Media Buyer's AI Co-Pilot
Landing page analysis AI — angles, hooks, ad copy, email/SMS, competitive intel.
Source: [github.com/spy4x/offer-lens](https://github.com/spy4x/offer-lens)
## Access
- **Web App**: `https://offer-lens.${DOMAIN}`
- **MCP**: `http://hl-offerlens-mcp:3000/mcp` (internal, via OpenWebUI)
## Build
Before first deploy, build Docker images from the offer-lens source:
```bash
# From homelab repo root
docker compose -f stacks/offerlens/compose.yml build
```
The `build.context` in compose.yml references `../../../offer-lens` relative to the stack directory. Ensure the offer-lens repo is cloned at `~/sync/code/offer-lens`.
## Stack
3 services:
| Service | Image | Purpose |
| --------------- | ------------------------- | ----------------------- |
| `offerlens` | `hl-offerlens:latest` | API + Web UI, port 8000 |
| `offerlens-mcp` | `hl-offerlens-mcp:latest` | MCP server, port 3000 |
| `offerlens-db` | `postgres:16-alpine` | Usage tracking |
## Env Vars
| Var | Required | Default | Description |
| ----------------------------- | -------- | -------------------------- | ------------------------------- |
| `OFFERLENS_DEMO_API_KEY` | Yes | — | DeepSeek API key for analysis |
| `OFFERLENS_API_BASE` | No | `https://api.deepseek.com` | OpenAI-compatible base URL |
| `OFFERLENS_MODEL` | No | `deepseek-chat` | LLM model |
| `OFFERLENS_BATCH_CONCURRENCY` | No | `5` | Batch concurrency |
| `OFFERLENS_DB_NAME` | No | `offerlens` | DB name |
| `OFFERLENS_DB_USER` | No | `offerlens` | DB user |
| `OFFERLENS_DB_PASSWORD` | Yes | — | DB password |
| `OFFERLENS_MCP_SESSION_ID` | No | `offerlens-mcp` | MCP session ID (auto-generated) |
## Monitoring
No Gatus endpoint yet (service has own auth). Add to gatus config on cloud server once route is stable.