{"slug": "i-shipped-my-first-aws-vercel-product-in-7-days-during-a-meta-attribution-crisis", "title": "I shipped my first AWS + Vercel product in 7 days during a Meta attribution crisis 👋", "summary": "Developer Andres built Ad Engine, a 24/7 AI ad-ops monitoring tool for DTC telehealth brands, in seven days for the H0 hackathon. The project was motivated by Meta's February 14 enforcement of health-data restrictions that broke pixel-based conversion tracking, causing a single ad set to burn $4,200 without alert. Andres chose Amazon Aurora PostgreSQL Serverless v2 over DynamoDB for its support of multi-entity joins and time-series windowing.", "body_md": "Hi dev.to 👋\n\nI'm Andres. Long-time builder, first-time dev.to poster. (Pretty sure I should have done this years ago.)\n\nJust shipped **Ad Engine** — a 24/7 AI ad-ops monitoring tool for DTC telehealth brands — in 7 focused days for the H0 hackathon. The build had teeth because there was a real reason for it: on February 14 this year, Meta enforced new health-data restrictions that killed pixel-based conversion tracking for the entire DTC telehealth space. At 11 PM the day it happened, I watched a single ad set at Bliss Health burn $4,200 with no alert. The tool I wanted didn't exist, so I built it.\n\n**Amazon Aurora PostgreSQL Serverless v2** (us-east-2, 0.5–1.0 ACU)\n\n**Next.js 16** — App Router, Server Components, Server Actions\n\n**Vercel Fluid Compute + Cron** — 15-min polling cadence on Meta + Google APIs\n\n**Claude Sonnet 4.6** with schema-enforced structured output via Zod + AI SDK Output.object()\n\n**Drizzle ORM** with postgres-js driver\n\nThe juiciest engineering decision was rejecting DynamoDB for Aurora Serverless v2. The workload turned out to be multi-entity joins + time-series windowing for 7-day baselines, and DynamoDB's GSI-design tax made that worse than a relational engine's OVER ROWS BETWEEN 336 PRECEDING window function.\n\nWrote the full decision matrix + schema + SQL + the postgres-js Fluid Compute connection-pool pattern prepare: false, max: 1) here:\n\n→ [Read the full decision matrix here](https://dev.to/member_8be1f66f/why-i-replaced-dynamodb-with-aurora-postgresql-serverless-v2-for-an-ad-ops-monitoring-workload-b47)\n\nThree questions for the community — and I'd genuinely love feedback:\n\n**For 24/7 polling workloads with bursty Claude diagnosis calls** — would you reach for Vercel Fluid Compute or stand up a separate worker? Curious about the threshold where the answer flips.\n\n**Anyone hit the postgres-js prepare: false + max: 1 Fluid Compute pattern?** Worked great for my scale (1 cluster, ~96 polls/day). Curious if anyone has stress-tested it past that.\n\n**What would you have built differently** in a 7-day sprint targeting this kind of operational-monitoring shape? Open to the roast.\n\nLive: [https://runadengine.com](https://runadengine.com)\n\n2-min walkthrough: [https://youtu.be/poFYDHB9WyU](https://youtu.be/poFYDHB9WyU)\n\nHappy to be here. 🚀", "url": "https://wpnews.pro/news/i-shipped-my-first-aws-vercel-product-in-7-days-during-a-meta-attribution-crisis", "canonical_source": "https://dev.to/member_8be1f66f/i-shipped-my-first-aws-vercel-product-in-7-days-during-a-meta-attribution-crisis-162c", "published_at": "2026-06-13 00:07:47+00:00", "updated_at": "2026-06-13 00:43:30.045588+00:00", "lang": "en", "topics": ["ai-products", "ai-tools", "ai-infrastructure"], "entities": ["Andres", "Ad Engine", "Meta", "Bliss Health", "Amazon Aurora PostgreSQL Serverless v2", "Vercel Fluid Compute", "Claude Sonnet 4.6", "Drizzle ORM"], "alternates": {"html": "https://wpnews.pro/news/i-shipped-my-first-aws-vercel-product-in-7-days-during-a-meta-attribution-crisis", "markdown": "https://wpnews.pro/news/i-shipped-my-first-aws-vercel-product-in-7-days-during-a-meta-attribution-crisis.md", "text": "https://wpnews.pro/news/i-shipped-my-first-aws-vercel-product-in-7-days-during-a-meta-attribution-crisis.txt", "jsonld": "https://wpnews.pro/news/i-shipped-my-first-aws-vercel-product-in-7-days-during-a-meta-attribution-crisis.jsonld"}}