PlotDNA is buyer-side land intelligence for serious property decisions. It helps buyers screen micro-markets, compare risk, understand growth signals, and prepare the right verification checklist before speaking with brokers.
Live public release market: Hyderabad
PlotDNA answers the buyer's first question:
Is this location worth deeper verification before I spend time or money on it?
It is not a legal due diligence product and does not replace title, RERA, zoning, approval, access, or price verification. It is the intelligence layer that helps a buyer decide what to verify next.
Current product model:
user input -> resolver -> supported locality or nearby market -> area profile -> paid report option
What users can do today:
- search Hyderabad areas, coordinates, or map links
- open the map and inspect nearby market context
- view area DNA score, growth story, risk notes, price band, and source context
- use the top feature rail to jump between verdict, sources, growth, risk, comparison, and PDF sections
- compare shortlisted Hyderabad micro-markets
- preview the live DNA report, then continue with Rs 99 lifetime access
- generate an Rs 99 source-of-truth screening PDF
- request or admin-test an Rs 499 custom buyer verification brief
Hyderabad is the live public release market. The production experience is optimized around Hyderabad micro-markets, including map search, coordinate analysis, area reports, compare view, report downloads, and buyer verification workflows.
Before 2026-06-05, the public Vercel production deployment reflected main
through PR #45, so PR #46 and PR #47 were visible only in preview deployments.
As of 2026-06-05, PR #46 and PR #47 have been merged into main; production
visibility now depends on the latest Vercel production deployment for main.
If a new feature, polygon, or data update is visible in a PR preview but not on the public site, first confirm:
- the PR has been merged into
main - Vercel production deployment for
maincompleted successfully - the browser is not serving a cached production bundle
Coming-soon markets:
| Market | Public status |
|---|---|
| Bangalore | Coming soon |
| Mumbai | Coming soon |
| Chennai | Coming soon |
| Pune | Coming soon |
| Delhi NCR | Coming soon |
| Vijayawada Capital Region | Coming soon |
| Visakhapatnam | Coming soon |
| Dubai | Coming soon |
These markets may have seeded data or resolver experiments in the repo, but they should not be presented as fully live release markets yet.
PlotDNA keeps free browsing open and gates only deeper report actions.
| Product | Price | Purpose | Output |
|---|---|---|---|
| Free screening | Rs 0 | Explore Hyderabad areas and compare basic signals | Map, area page, score, risk/growth context |
| Lifetime access + instant PDF | Rs 99 | Quick shortlist decision for one area and repeat access to the report app | Area score, growth signals, risk notes, buyer checklist, source-of-truth PDF |
| Custom buyer verification brief | Rs 499 | Project-specific buyer verification planning | Buyer context, seller questions, price sanity, verification priorities, next actions |
The Rs 499 brief is intentionally different from the Rs 99 PDF. It uses buyer inputs such as budget, timeline, project notes, broker quote, or survey details to produce a more specific verification brief.
The Rs 99 flow is designed to avoid repeated payment prompts after access is verified. A paid user sees a welcome-back state and can explicitly download the source-of-truth PDF without seeing another Rs 99 card. During the timed preview lock, the upper report export card is hidden so the page does not show duplicate payment cards.
Internal QA can test the generated custom buyer verification PDF without paying through Razorpay on every run.
Local test process:
- Start the backend with
APP_ENV=development. - Start the frontend with
VITE_API_URL=http://localhost:8000. - Open the app once so an anonymous PlotDNA session is created.
- In browser DevTools, read
localStorage.plotdna_access_token. - Activate the test entitlement with
POST /api/v1/entitlements/dev/activate:
curl -X POST http://localhost:8000/api/v1/entitlements/dev/activate \
-H "Authorization: Bearer <plotdna_access_token>" \
-H "Content-Type: application/json" \
-d "{\"days\":30}"- Open an area report, click
Pay Rs 499, enter contact and buyer context, then clickDownload custom brief.
Production-safe admin testing uses ADMIN_ACCESS_USER_IDS. Add the internal
test user id to that environment variable when a trusted admin account should
bypass payment. ADMIN_ACCESS_EMAILS is intentionally ignored in production so
public users cannot self-declare an admin email to unlock paid reports.
Customer PDF downloads use email OTP verification. In local development the API
returns a visible debug code; in production the code is hidden unless the email
is explicitly allowlisted with EMAIL_OTP_DEBUG_EMAILS.
Set these backend environment variables on Render before testing with real customer emails:
EMAIL_SMTP_HOST=
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USERNAME=
EMAIL_SMTP_PASSWORD=
EMAIL_SMTP_FROM=
EMAIL_SMTP_USE_TLS=trueIf production SMTP is not configured, normal customer OTP requests return
503 Email delivery is not configured. instead of incorrectly saying the code
was sent. For internal production testing without SMTP, add the exact test email
to EMAIL_OTP_DEBUG_EMAILS; the frontend will show Dev code for that email.
Razorpay is the intended India payment path.
Payment Links can be used immediately:
VITE_RAZORPAY_PDF_LINK=
VITE_RAZORPAY_CUSTOM_REPORT_LINK=When these links are configured at build time, the Rs 99 and Rs 499 buttons open the relevant Razorpay payment link. If they are missing, the UI falls back to a manual checkout request so the user can still leave contact details.
Paid access recovery supports two user-facing paths:
- Razorpay webhooks are the primary production recognition path. Configure
RAZORPAY_WEBHOOK_SECRETand subscribe Razorpay toPOST /api/leads/razorpay/webhook; a signedpayment_link.paidevent marks the matching PlotDNA lead as paid. - The frontend remembers when a user leaves for Razorpay and re-checks paid access when the browser tab or mobile webview becomes active again.
- Returning users can recover access with the same email and phone used for Razorpay; this is the normal cross-device path.
- Payment ID entry is hidden behind a fallback disclosure and should be used only for direct Razorpay payments that cannot be matched automatically.
Backend Checkout/webhook automation uses:
RAZORPAY_KEY_ID=
RAZORPAY_KEY_SECRET=
VITE_RAZORPAY_KEY_ID=
RAZORPAY_WEBHOOK_SECRET=Do not commit API keys or downloaded Razorpay CSV files.
PlotDNA currently has two layers.
Database ownership and environment roles are defined in
docs/database-environments.md: Supabase is the one
persistent application database; Neon is disposable integration-test infrastructure
only.
This is the strongest production layer today.
- bundled city/locality datasets live in
frontend/src/data/ - city and locality resolver data lives under
data/cities/ - area pages show score, narrative, projects, sources, risks, and report actions
- Hyderabad is the primary public release dataset
This layer enriches the curated product when backend/API configuration is available.
- backend routes can analyze coordinates and resolve map links
- resolver logic maps points to exact, nearby, cluster, or uncovered context
- AI verdict flows enrich area pages when provider keys are configured
- UI fallbacks remain user-safe when backend enrichment is unavailable
Coverage must always be explicit:
| Tier | Meaning |
|---|---|
| Tier A | Full micro-market support: polygon-defined locality, stored market profile, area page, sources, projects, verdict support |
| Tier B | Nearby or cluster support: approximate supported-market context with partial confidence |
| Tier C | Coordinate-only support: dynamic location signals without full curated locality intelligence |
frontend/
src/
components/ UI components
data/ bundled city and market datasets
lib/ API helpers, resolver, analysis helpers
pages/ landing, map, area detail, compare, brochure flows
scripts/ focused release checks
backend/
app/
api/routes/ FastAPI routes
services/ scoring, verdict, entitlement, and helper logic
tests/ backend regression tests
data/
cities/ city geometry, aliases, clusters, resolver data
docs/
ROADMAP.md
ALL_INDIA_EXPANSION_PLAN.md
COVERAGE_TIERS.md
GTM_STRATEGY.md
cd frontend
npm install
npm run devRuns at http://localhost:5173.
Useful checks:
npm run test:hyderabad-production
npm run test:landing-rollout-copy
npm run test:custom-buyer-brief
npm run test:area-feature-navigation
npm run test:area-dna-paywall
npm run test:report-pricing-copy
npm run test:landing-live-metrics
npm run lint
npm run buildcd backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reloadRuns at http://localhost:8000.
Backend entitlement checks:
cd backend
python -m unittest tests.test_report_entitlementsCurrent release posture:
- Hyderabad is the launch market.
- Other cities are visible as coming-soon expansion markets.
- Free browsing stays open before asking for contact/payment.
- Area reports now have a sticky top feature rail for verdict, sources, growth, risk, comparison, and PDF sections.
- The feature rail includes a scroll-driven progress line that follows the report scroll container, while the tabs remain horizontally scrollable on mobile.
- Preview lock uses a compact feature carousel instead of a second full payment card.
- The Rs 99 CTA uses Motion animation/reflection treatment for stronger mobile affordance.
- Paid actions are separated into Rs 99 lifetime access + screening PDF and Rs 499 custom buyer verification brief.
- Verified paid access shows a welcome-back state and does not auto-download the PDF.
- Razorpay Payment Links can be configured now.
- Direct Razorpay Payment ID recovery can grant access when the original lead row is missing.
- Landing live-now display has a launch floor of 143 plus live score updates.
- Full Razorpay Checkout/webhook entitlement automation remains the next payment hardening step.
The highest-value next technical step is backend-backed Razorpay Checkout:
- create backend orders for Rs 99 and Rs 499 packages
- verify Razorpay payment signatures
- grant report entitlements after payment success or webhook confirmation
- keep admin/test bypasses for internal QA
- keep Payment Links as a fallback path
Longer term, move market truth into one backend-owned catalog and make the frontend consume that catalog through APIs.
PlotDNA is buyer-side screening intelligence. It helps users prepare better questions and verification priorities. It does not certify land, validate title, replace legal due diligence, or guarantee investment returns.