Inspiration
Customer success teams at B2B companies receive thousands of support tickets, app-store reviews, and survey responses every single day — yet the why behind churn and product friction stays buried in plain text. Traditional databases search by keyword: if a customer writes "the payment page is confusing," a keyword search for "checkout" finds nothing.
We watched support agents spend hours manually tagging tickets, product managers miss emerging bug patterns hidden across thousands of free-text responses, and customer success teams only discover unhappy accounts after they have already left.
We asked: what if you could ask your entire feedback history anything, in plain English, and get instant semantic results? That question — and the conviction that Aurora PostgreSQL with pgvector could answer it without a dedicated vector database — became NeuroDash.
What it does
NeuroDash is an AI-powered B2B customer intelligence platform that turns unstructured feedback into instant, searchable insight:
- Semantic ingestion — POST any feedback text to
/api/ingest; each item is embedded as a 1536-dimensional vector by AWS Bedrock Titan Text Embeddings v1 and stored in Amazon Aurora PostgreSQL with the pgvector extension. - Natural language search — POST a plain-English query to
/api/search; results are ranked by cosine similarity using pgvector's<=>operator — no keyword match needed. Ask "checkout confusion" and surface every ticket about payment friction, even if the word "checkout" never appears. - Live dashboard — Next.js 16 frontend on Vercel visualises ingestion velocity and displays the most semantically relevant feedback items with similarity scores in real time.
- Universal REST API — any CRM, helpdesk, or survey platform (Zendesk, Intercom, Typeform) can push feedback via a single HTTP POST; embeddings are generated server-side, invisible to the caller.
How we built it
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 App Router, Tailwind CSS v4, Recharts |
| Hosting | Vercel Edge Network + Serverless Functions |
| Embeddings | AWS Bedrock amazon.titan-embed-text-v1 (1536 dims) |
| Database | Amazon Aurora PostgreSQL 15.17 Serverless v2 (0.5–16 ACU) |
| Vector search | pgvector <=> cosine similarity operator |
| ORM | Drizzle ORM with custom vector(1536) column type |
| Infrastructure | AWS CloudFormation (VPC, subnets, Aurora cluster, IAM) |
| Auth | IAM user with least-privilege bedrock:InvokeModel policy |
Data flow:
- User submits a natural language query from the dashboard.
- Vercel Function calls AWS Bedrock to embed the query → 1536-dimensional float array.
ORDER BY embedding <=> $queryVectorreturns the closest feedback items by cosine distance inside Aurora PostgreSQL.- Results stream back to the dashboard with similarity scores — no separate vector database, no extra infrastructure.
Challenges we ran into
- Aurora engine version — PostgreSQL
15.4was unavailable ineu-central-1; useddescribe-db-engine-versionsto discover the latest available version (15.17) and updated the CloudFormation template. - VPC routing gap — the provisioned VPC had no public route table, making Aurora unreachable from Vercel; fixed by adding
PublicRouteTable,PublicRoute, and subnet route table associations to the IaC template. - Native binaries on Vercel — our first embedding approach used
fastembed+onnxruntime-node(native C++ ONNX runtime); this caused silent 404 responses on Vercel's build platform; switching to AWS Bedrock (pure JavaScript SDK) resolved it completely. - SSO token expiry — AWS SSO credentials expire every ~1–2 hours during development; created a dedicated IAM user
neurodash-vercelwith a permanent, least-privilege Bedrock InvokeModel policy to unblock production deployment. - Custom Drizzle vector type — Drizzle ORM has no built-in pgvector support; implemented a custom column type with
::vectorcast for both read and write paths.
Accomplishments that we're proud of
- Zero dedicated vector DB — full semantic search inside Amazon Aurora PostgreSQL using pgvector; no Pinecone, Weaviate, or Qdrant; no additional service cost or operational overhead.
- Full infrastructure as code — a single CloudFormation YAML provisions the entire Aurora stack: VPC, two-AZ subnets, internet gateway, route tables, security groups, parameter groups, and the Serverless v2 cluster.
- 1536-dimensional production embeddings — Bedrock Titan embeddings used in production, the same model family AWS uses internally in Comprehend and Kendra.
- Least-privilege IAM posture — dedicated IAM user scoped to exactly
bedrock:InvokeModelon the specific Titan model ARN; no wildcard permissions anywhere in the stack. - End-to-end in one session — from empty repo to seeded Aurora database with 20 real Bedrock embeddings, semantic search, and live Vercel deployment in a single continuous hackathon session.
What we learned
- pgvector is production-ready for most B2B workloads — cosine similarity search on 1536-dim vectors in Aurora is fast, reliable, and eliminates an entire infrastructure tier; the "Zero Stack" is genuinely viable.
- AWS Bedrock is the right embedding provider for AWS-native stacks — IAM-based auth means no separate API keys, no rotation policy, and the same credential chain as the rest of the AWS stack.
- Write CloudFormation first, click the console second — hand-writing the IaC template surfaced two critical networking gaps (missing route table,
PubliclyAccessibleon the wrong resource type) that would have been invisible through the console. - Audit every npm package for native binaries before deploying to Vercel —
onnxruntime-nodeand similar packages are common silent-failure culprits; always check for.nodefiles before committing a new dependency.
What's next for NeuroDash
- v1.1 — Live integrations — native webhooks for Zendesk, Intercom, Salesforce, and Typeform; no code required to stream feedback into Aurora.
- v1.2 — AI summarisation — weekly digest emails generated by Bedrock Claude, summarising trending topics and emerging product issues directly from Aurora query results.
- v2.0 — Churn prediction — supervised classifier trained on embeddings from historically churned accounts; proactive alerts before customers escalate.
- Multi-tenant SaaS — row-level security in Aurora per workspace; each customer's feedback stays isolated by design.
- Aurora Global Database — global read replicas for sub-millisecond dashboard loads across regions, supporting enterprise customers with data residency requirements.
Monetisation: $99/mo (up to 10k feedback items) · $499/mo (up to 100k) · Enterprise (custom ACU + VPC peering)
Built With
- amazon-aurora-postgresql
- amazon-web-services
- aws-bedrock
- cloudformation
- drizzle-orm
- next.js
- pgvector
- recharts
- tailwind-css
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.