Skip to content

Ansh DoshiFull Stack Developer · Software Engineer

Ibuildthesystemsproductstrust.

4+ years of experience building full-stack systems — identity, access control, search infrastructure, and AI features shipped with a human in the loop.

ansh@portfolio: ~

zsh
  1. $ whoami
    Ansh Doshi — Full Stack Developer · Software Engineer
  2. $ cat focus.txt
    identity & access · search · applied LLMs
  3. $ experience --summary
    4+ years · 3 teams · React → full stack
  4. $ stack --core
    TypeScriptReactNext.jsNode.jsPostgreSQLTypesense
  5. $ status
    open to work · India, open to relocation

01Profile

Full stack, with a bias for the parts that have to be right.

Full stack developer with 4+ years of experience in TypeScript, React, Next.js, Node.js and PostgreSQL. Currently own identity, access control and candidate search for a four-product dealer SaaS platform serving 1,000+ dealerships: mobile-OTP login, cross-product SSO, role-based permissions, Typesense search over 300K+ profiles and human-reviewed LLM features. Previously owned the React layer for two client platforms and mentored two junior developers.

Currently
Full Stack Developer
Autoverse AI
Based in
India
Open to relocation
  • 01

    Identity & access

    Mobile-OTP sign-in, cross-product SSO and a 7-role permission model that fails closed on the server and mirrors the same rules in the UI.

    SSOOTPRBACSessions
  • 02

    Search & data pipelines

    Typesense search over 300K+ profiles, kept within 60 seconds of PostgreSQL by a change-data-capture pipeline and queue workers.

    TypesensePostgreSQLCDCCron
  • 03

    Applied LLMs

    Job descriptions, resume extraction and candidate matching on Gemini, with rate limits, role restrictions and human approval before anything reaches a candidate.

    GeminiVercel AI SDKHuman-in-the-loop
  • 04

    Frontend architecture

    Typed, cache-aware React and Next.js data layers with explicit loading and error states — plus the code review and shared standards that keep a team consistent.

    ReactNext.jsTanStackMentoring

What I own

One request, five systems I built.

A dealer signs in with a mobile OTP, moves between products through single-use SSO handoff codes, is authorised by a fail-closed 7-role check, searches 300K+ profiles kept fresh by change-data-capture, and uses AI features that a human approves first.

request path · dealer SaaS

live
  1. 1Mobile OTPattempt limits · lockout
  2. 2Cross-product SSOsingle-use handoff codes
  3. 3RBAC · 7 rolesdealer ∩ user · fails closed
  4. 4Typesense search300K+ profiles · 5 families
  5. 5LLM, human-approvedJDs · resumes · matching
  6. ↳ PostgreSQL: CDC → index ≤ 60s

02Products

Products I’ve worked on at Autoverse AI.

Five products on one dealer platform. How deep I went differs from product to product, so each card says exactly what I did.

autoswitch.in
AutoSwitch home page: India's only job portal dedicated to automotive retail, with job search and role chips
Core engineer

AutoSwitch

India's automobile retail job portal

A hiring platform for automotive dealerships: dealers post jobs and search candidates, job seekers find roles across the dealership network.

What I did

  • Candidate search on Typesense over 300K+ profiles, kept within 60 s of PostgreSQL
  • 6-stage LLM recruitment pipeline with human approval, and Gemini candidate matching
  • Credit billing for paid contact lookups, and 34 scheduled jobs on Vercel Cron
Next.jsTypesensePostgreSQLGemini
Visit autoswitch.in(opens in a new tab)
DreamDashboard · AI dashboard
DreamDashboard AI sales report: AI-written highlights and key-number tiles with filters
Primary engineer

DreamDashboard

Business review dashboards, now with AI

An analytics and business-review tool for dealerships covering sales and after-sales, with controlled access. Its AI dashboards turn a dealer's Excel exports into live dashboards where every tile is a stored query.

What I did

  • Primary engineer on the AI dashboards: Excel ingestion, stored-query tiles, grounded “Ask”, email sharing
  • Built and hardened DreamDashboard's report builder and pivot reports
  • Bridged the AI dashboards into DreamDashboard as an embedded view
Next.jsVercel AI SDKPostgreSQLReporting
Automate
Automate home: order totals and a card per stage, from booking and DP approval through finance, insurance, exchange and delivery
Platform integration

Automate

The paperless dealership

Workflow automation for dealerships: tracks every customer order from booking through finance, insurance, exchange and accessories to delivery, with e-documents and real-time productivity for each department.

What I did

  • Made the cross-product SSO handoff into Automate reliable: bounded retries, and telling an outage apart from an unknown user
  • Tuned the tenant database pool and moved shared-database access to the Supabase REST API
  • Dealer provisioning, subscription access windows and first-party analytics
SSOPostgreSQLSupabaseMulti-tenant
AutoSphere · Configurator
AutoSphere configurator: a 3D SUV on a road scene with colour swatches and exterior, interior, doors and scene modes
Platform integration

AutoSphere

Cars in 3D, VR and mixed reality

A virtual dealership: a real-time 3D car configurator (colours, interior, doors and scenes) for large touch screens and VR/MR headsets, giving OEMs a frugal way to expand their network.

What I did

  • Gated the 3D viewer behind a platform session, preserving app parameters through the sign-in handoff
  • Built the product switcher, including brand selection for multi-brand users
  • Support-ticket registration, subscription access windows and analytics
Three.jsSSOSession gating
AutoServe · Outreach
AutoServe calls screen: calls today, answered, typical length and bookings, with the call list (customer details blurred)
On the platform

AutoServe

Service booking for dealership groups

Service booking, pickup-and-drop logistics and customer outreach for multi-outlet dealership groups: the booking desk behind an AI voice agent that calls customers when service is due.

Service bookingLogisticsAI calling

03Engineering

How I built it: my part, in depth.

The engineering behind those products that I own end to end. The code is private, so each deep dive shows the problem, what I built and the numbers behind it, with the architecture drawn out.

01  Platform · All products

2025 — now

Unified identity & SSO

Four dealer products, three incompatible ways to sign in — passwords, Keycloak and per-product OTP — and an SSO hop between products that failed intermittently.

RoleOwner of identity and access control across the platform.

  • One mobile-OTP identity layer for every product, with per-code attempt limits and lockout after repeated failures.
  • Found the intermittent SSO failure in production data: a meta refresh raced location.assign() and replayed single-use handoff codes.
  • A 7-role RBAC and entitlement model with dealer-namespaced permissions; the server intersects dealer and user grants and fails closed, and the UI guard uses the same rules.
Next.jsTypeScriptPostgreSQLOTPSSORBAC
Passwords, Keycloak and per-product OTP are replaced by a single mobile-OTP identity. Single-use SSO handoff codes carry the session into four products, each guarded by a seven-role RBAC check that intersects dealer and user grants and fails closed.BeforePasswordsKeycloakPer-product OTPAfterMobile OTPlimits · lockoutSSOsingle-use codeRBAC · 7 roles · fails closedserver check = UI guard4 products
architecture sketch · swipe →private codebase
Login systems
3 → 1
Auth codes analysed
4,000+
Roles, fail-closed
7

02  AutoSwitch · Search + LLMs

2025 — now

Candidate search & AI hiring

Dealerships hiring across 5 job families needed to search 300K+ candidate profiles by role, seniority and city — and wanted AI help without AI talking to candidates unchecked.

RoleBuilt candidate search, the search-index pipeline, the LLM features and credit billing.

  • Typesense search with seniority-aware role hierarchies, city and role synonyms and tuned typo tolerance — a Sales Executive search excludes people already promoted past it.
  • Change-data-capture: row-level triggers enqueue reindex jobs; per-minute cron workers drain separate candidate and job queues.
  • A 6-stage recruitment pipeline using Gemini and gpt-oss-120b for job descriptions and resume extraction, with human approval on every AI output.
  • Gemini candidate matching with low-temperature batch scoring, 20 requests/minute, limited to HR, admin and interviewer roles.
  • Credit billing that charges only when a paid external lookup returns contact details, with per-search cost estimates.
Next.jsTypesensePostgreSQLGeminiVercel CronSupabase
Row-level triggers in PostgreSQL enqueue reindex jobs into separate candidate and job queues. Per-minute cron workers drain them into Typesense, which serves seniority-aware search over 300K+ profiles. LLM features sit beside search and require human approval.PostgreSQLrow-level triggerscandidate queuejob queueCron workersevery minuteTypesense · 300K+ profilesrole hierarchy · synonyms · typo≤ 60 s behind postgresHuman-approved LLM6-stage pipelineGemini matching20 req/min · role-gated
architecture sketch · swipe →private codebase
Profiles searchable
300K+
Index lag behind Postgres
≤ 60s
Scheduled jobs
34

03  DreamDashboard AI

2026 — now

AI dashboards from Excel

Dealers export Excel reports that differ by report type and by dealer management system. Hand-built dashboards go stale the moment next month's file arrives.

RolePrimary engineer on the AI dashboard product.

  • Upload an Excel file; AI works out what the data means and builds a dashboard from it.
  • Every number, chart and tile is a stored query, not a stored value — next month's upload updates the whole dashboard.
  • Tenant filters are injected server-side on every query and never taken from AI-generated SQL.
  • “Ask” answers grounded in the dealer's own data and active filters; editable queries with undo; dashboards shared by email.
Next.jsTypeScriptVercel AI SDKPostgreSQLExcel ingestion
A dealer uploads an Excel export. AI infers its structure and writes stored queries. Each dashboard tile executes its query against live data, with the tenant filter injected on the server. The next month's upload updates every tile.Excel uploadany report shapeAI inferswhat the data meansStored queriesno baked valuesTenant filterserver-side, never from AI SQLLive tiles+ grounded “Ask”↻ next month’s filere-runs every query
architecture sketch · swipe →private codebase
Values baked into tiles
0
Tenant isolation
Server-side
AI answers
Grounded

04  Platform · All products

2026

First-party analytics

Every product surface needed visitors, device split, time-on-page and drop-off — owned in-house rather than borrowed from third-party scripts.

RoleBuilt the tracker, collector and warehouse.

  • A dependency-free tracker of about 4 KB: pageviews, engaged time, scroll depth and business events.
  • A collector that validates, screens bots, resolves geography and verifies identity before a single write.
  • A partitioned warehouse, with each product surface pinned to a tracker version so new builds roll out one surface at a time.
TypeScriptNext.jsPostgreSQLPartitioning
Each product surface loads a pinned version of a dependency-free tracker of about 4 KB. Events go to a collector that validates, screens bots, resolves geography and verifies identity, then writes to a partitioned warehouse.Surfaces · pinned trackert.v1.js~4 KB · no depst.v2.js~4 KB · no depst.v3.js~4 KB · no depsCollector· validate· screen bots· resolve geo· verify identityWarehousepartitionedfactspageviews · engaged time · scroll depth · business eventsvisitors · devices · time on page · conversion · drop-off
architecture sketch · swipe →private codebase
Tracker, no dependencies
~4 KB
Version pinning
Per-surface
Ingestion
Bot-screened

Also shipped on the platform

  • Dealer lifecycle mailer

    Headless service sending 9 kinds of trial and billing email, with a read-only verification run against live data that never mails a dealership.

  • OTP-gated demo access

    Real SMS OTP in front of a product demo, with a per-number login quota and 61 unit tests. No SMS can leave a non-production machine.

  • Platform welcome

    The animated product-selection entry point that routes dealers into each of the platform's modules.

04Experience

Four years, three teams, one direction: deeper into the stack.

  1. Full Stack Developer · Autoverse AI

    Jun 2025 — Present

    Ahmedabad, India

    Own identity, access control and candidate search across a four-product dealer SaaS platform serving 1,000+ dealerships and 300K+ candidate profiles in 28 states and union territories.

    Show 9 more
    • Replaced three incompatible login systems (passwords, Keycloak and per-product OTP) with a single mobile-OTP identity layer, with per-code attempt limits and lockout after repeated failed sign-ins.
    • Fixed an intermittent cross-product SSO failure: a meta refresh raced a location.assign() call and replayed single-use handoff codes. Found it in 4,000+ production auth codes over 30 days (up to 48% unused on one portal).
    • Built candidate search on Typesense over 300K+ profiles, with seniority-aware role hierarchies across 5 job families, city and role synonyms and tuned typo tolerance, so a Sales Executive search excludes candidates already promoted past that level.
    • Designed a 7-role RBAC and entitlement system with dealer-namespaced permissions. A server-side check intersects dealer grants with user grants and fails closed; the same rules drive a guard in the UI.
    • Built a change-data-capture pipeline that keeps the search index within 60 seconds of PostgreSQL: row-level triggers enqueue reindex jobs, and per-minute cron workers drain separate candidate and job queues.
    • Integrated LLMs (Gemini and gpt-oss-120b) into a 6-stage recruitment pipeline for job description generation and resume extraction. Every AI output requires human approval before it reaches a candidate.
    • Designed an LLM-assisted candidate matching pipeline on Gemini: batch match scoring at low temperature for consistent rankings, rate-limited to 20 requests per minute and restricted to HR, admin and interviewer roles.
    • Built credit billing that charges a dealer only when a paid external lookup returns contact details, never for in-house profiles or failed lookups, with per-search cost estimates to track daily spend.
    • Run 34 scheduled jobs on Vercel Cron, including per-minute WhatsApp, email and social-post queue workers and 9 staggered analytics cache-warming jobs.
    Next.jsReactTypeScriptPostgreSQLSupabaseTypesenseGeminiVercel
  2. Software Engineer · N2N Solutions

    Sep 2023 — May 2025

    Pune, India

    Owned the React application layer for 2 production client platforms, from component architecture through release.

    Show 3 more
    • Integrated REST APIs into typed, cache-aware data layers with explicit loading and error states, and led refactoring and optimization passes across the React codebase.
    • Mentored 2 junior React developers through code review and pairing, and set shared standards for component design, state management and Git workflow.
    • Worked with QA to define test strategy and coverage priorities before releases, reducing the defects that reached production.
    ReactTypeScriptREST APIsRedux ToolkitTanStack Query
  3. Junior React Developer · Excellent Web World

    May 2022 — Sep 2023

    Ahmedabad, India

    Built React frontends for 2 products in an 8–9 person cross-functional team: a Hong Kong logistics and warehousing platform and a salon booking application.

    Show 2 more
    • Built Node.js services behind the salon product's admin portal and its companion React Native app, beyond the original frontend scope.
    • Delivered the customer-facing app and the internal operations portal for the logistics platform, with responsive, cross-browser layouts and REST API integration.
    ReactNode.jsReact NativeREST APIs

05Skills

The toolkit, grouped by the job it does.

01Languages
TypeScriptJavaScript (ES2022+)SQLHTML5CSS3
02Frontend
React 19Next.js 16 (App Router, Server Components, Server Actions)Redux ToolkitTanStack Query / Table / VirtualReact Hook FormZodTailwind CSSRadix UIMaterial UIReact Native
03Backend
Node.jsNestJSExpress.jsREST API designMicroservicesBackground workersCron schedulingQueue processingCachingApache Kafka
04Databases & Search
PostgreSQLSupabaseMySQLMongoDBPrismaRow-level securityDatabase triggersMaterialized viewsIndexing & query optimizationTypesenseElasticsearch
05Security & Identity
SSOOAuth2 / OIDCJWTOTP authenticationSession managementRBACMulti-tenant isolationRate limitingAES encryption
06AI Integration
Google GeminiAnthropic ClaudeVercel AI SDKPrompt engineeringResume parsingLLM-assisted candidate matchingRetrieval & ranking
07Cloud & DevOps
AWS (EC2, S3)VercelDockerKubernetesGitGitHub ActionsCI/CDLinux
08Testing & Tools
VitestPlaywrightPostHogGA4Razorpay

06Credentials

Education and certifications

Education

Bachelor of Science, Information Technology

GLS University, Ahmedabad, India

2023

Certification

NASSCOM / NCVET Certification

Ministry of Skill Development & Entrepreneurship, Govt. of India

Certification

Introduction to Artificial Intelligence

IBM

07Contact

Hiring for identity, search or AI features? Let’s talk.

Open to full stack and software engineering roles. Based in India and open to relocation. The fastest way to reach me is email.