Inspiration

Small business owners in emerging markets — Lagos, Accra, Nairobi — spend hours manually sending emails, chasing leads, and replying to customers. They can't afford a marketing team. We asked: what if a single AI agent could do all of that, autonomously, while they sleep?

What it does

MarketMe is a full AI marketing agent platform powered entirely by Amazon Nova. Register a business, describe your products, and the agent takes over:

  • Chat agent (Nova 2 Lite) — understands natural language, navigates the app, adds products, drafts campaigns, and analyses uploaded images for marketing insights
  • Voice agent (Nova 2 Sonic) — real-time bidirectional speech with auto-session refresh before the 8-minute limit
  • Email campaigns — multi-recipient sending with chip input, CSV upload, and a shared contact pool of community leads
  • Inbox monitor — Celery Beat checks your inbox every 2 minutes, classifies replies as agreed/declined/interested/question, and sends AI-drafted responses automatically
  • Lead finder — Playwright headless browser scrapes Bing/DuckDuckGo for business emails, falls back to a shared CSV ecosystem
  • Business page generator — Nova drafts a live landing page at /biz/your-slug with a real-time WebSocket customer chat widget
  • UI control — the agent navigates panels, opens modals, and switches themes from natural conversation

How we built it

Everything lives in a single app.py file — a deliberate constraint to prove how much Nova can do with minimal infrastructure:

  • Flask + Flask-SocketIO for the web server and real-time WebSocket events
  • Nova 2 Lite via the OpenAI-compatible Nova API for chat, intent detection, image analysis, email classification, and HTML page generation
  • Nova 2 Sonic via WebSocket for the voice bridge — raw PCM audio resampled to 24kHz, streamed bidirectionally
  • Celery + Redis for background tasks — IMAP monitoring, campaign delivery, and follow-up scheduling that continues after the browser closes
  • SQLAlchemy + SQLite for the data layer
  • Playwright for headless browser lead scraping
  • A shared CSV ecosystem where every new contact — scraped, imported, or from live chat — is appended and available to the whole platform

Challenges we ran into

  • Nova Sonic's 8-minute session limit — solved with a client-side auto-restart timer at 7 minutes that reconnects silently
  • nova_grounding hijacking UI commands — "go to products" triggered a web search instead of navigation. Solved by detecting navigation keywords and disabling grounding for those messages
  • Playwright being blocked by search engines — Bing and DuckDuckGo block automation even with stealth headers. Solved with a graceful fallback to the shared CSV contact pool
  • Email auto-reply not working — the IMAP monitor was only replying to positive intents. Widened it to reply to all intents including other, and fixed the reply loop skipping outbound emails sent from the same address
  • SQLAlchemy legacy warnings — migrated all .query.get() calls to db.session.get() for SQLAlchemy 2.0 compatibility

Accomplishments that we're proud of

  • A complete agentic marketing platform in a single Python file — 2,100+ lines covering auth, voice, email, scraping, live chat, and AI in one deployable unit
  • Four Nova capabilities in one app — reasoning (Lite), voice (Sonic), multimodal understanding (image analysis), and intent-driven UI automation
  • The agent genuinely works while offline — campaigns send, emails are monitored and replied to, and follow-ups fire on schedule via Celery even with the browser closed
  • A shared contact ecosystem — contacts discovered by one user benefit the whole platform community
  • Clean dark/light theme with full agent-controlled UI — the first time we said "switch to dark mode" and the app actually did it was a genuine moment

What we learned

  • Nova 2 Lite's web grounding is powerful but needs intent-aware gating — not every message should hit the internet
  • Building voice AI is mostly an audio pipeline problem. Nova Sonic itself is straightforward once PCM resampling and buffered playback are right
  • Single-file architecture forces good discipline — every function has to justify its existence
  • The shared contact CSV idea emerged from a real observation: leads found by one business are often relevant to others in the same ecosystem

What's next for MarketMe

  • Nova Act integration — replace Playwright with Nova Act for reliable, production-grade UI automation and lead research across LinkedIn, Apollo, and business directories
  • Nova multimodal embeddings — semantic search across contacts, emails, and campaigns so the agent can surface "who last replied about pricing?" from natural language
  • Multi-tenant team accounts — role-based access so the whole marketing team works in one workspace
  • WhatsApp and SMS channels — extend the agent beyond email to where African customers actually are
  • Campaign analytics — open rates, reply rates, and conversion tracking fed back to the agent for smarter targeting
  • Mobile app — the voice agent especially belongs on mobile

Built With

Share this project:

Updates