Nisarg GurjarEmail me
LIVE · MY VENTURE

Ajna. A sales call becomes an approved quote, for any event vendor.

Status
Live · invite-only
Role
Founder — my own product
Stack
Next.js · TypeScript · Drizzle · Neon Postgres · Claude
Scale
13-table schema · 16 pages · AI-safety test suite
Year
2026
Days → minutesquote turnaround, with a human always in the loop
Ajna's review queue — quotes waiting on human approval, an AI-drafted quote flagged for review, and recently sent quotes
The review queue: nothing sends until a human approves it. (Demo tenant data.)
The problem

Event vendors sell on calls, then lose the sale in the follow-up: transcribing what was said, building a price, formatting an email — for days, while the client shops around. I had already automated this for one real events company. The question Ajna answers: can any vendor onboard themselves to the same machine?

What I shipped
  • True multi-tenancy — organizations, memberships, and tenant-scoped API keys; every query is org-scoped by construction.
  • Self-serve intake — each org gets its own transcript webhook; recordings flow in from their own call-recorder account.
  • AI classify & extract — Claude decides if a call is a sales call and pulls the quote fields, using forced tool schemas so output is always valid JSON.
  • Review queue with a human gate — nothing sends until a person reviews the extracted quote and approves it.
  • Branded quote email + calendar invite — rendered per-vendor, with a Google OAuth flow that verifies scopes before promising invites.
  • Encrypted credential store — vendors’ integration secrets are encrypted at rest, per-tenant.
How it works
One quote, end to end
  1. 1Sales call ends — recorder webhook fires into the vendor’s org
  2. 2Claude classifies the call, then extracts quote fields (forced schema)
  3. 3Quote lands in the review queue as a draft
  4. 4A human edits if needed, then approves
  5. 5Branded email + calendar invite go out; every step event-logged
The hard part

The hard part wasn’t the AI — it was making the AI safe to put in front of strangers’ businesses. Ajna ships with a dedicated AI-safety test suite: transcripts that try to prompt-inject the extractor, decoy numbers meant to be mistaken for guest counts, calls that aren’t sales calls at all. The pipeline also runs on an explicit quote state machine — a quote can only move along defined edges, so a bug can’t silently skip the human approval step.

Multi-tenancy was the other discipline: one careless query without an org scope is a data leak between businesses. The schema and API layer make the scoped path the only path.

Proof
  • AI-safety suite (prompt injection, decoys, non-sales calls) runs green in CI.
  • Quote state machine unit-tested edge by edge.
  • Live at ajnadesk.com — invite-only while onboarding early vendors.
Ajna dashboard design direction — bold typographic layout showing quotes awaiting review
One of four full design directions explored before building. (Fictional data.)
Where it stands

Live and onboarding invited vendors. Ajna is the productized form of automation already carrying real revenue at a real events company — which is the pitch: this isn’t a demo, it’s a machine that already works, now with a signup page.

I specified the product, reviewed every behavior, and gated releases on the AI-safety suite. Claude Code wrote it. How I work →

Run an events business? I built Ajna for you.

AI automation for wedding & event vendors — quotes in minutes instead of days, a human always in the loop.

Visit ajnadesk.com