Skip to content

About

helps buyers decide where to buy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

PlotDNA

PlotDNA logo

Know if the plot is worth buying before you commit capital.

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

Frontend Backend Payments Status


Product Snapshot

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

Public Release Scope

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.

Production Deployment State

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:

  1. the PR has been merged into main
  2. Vercel production deployment for main completed successfully
  3. 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.


Report Products

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.


Admin/test flow for the Rs 499 buyer brief

Internal QA can test the generated custom buyer verification PDF without paying through Razorpay on every run.

Local test process:

  1. Start the backend with APP_ENV=development.
  2. Start the frontend with VITE_API_URL=http://localhost:8000.
  3. Open the app once so an anonymous PlotDNA session is created.
  4. In browser DevTools, read localStorage.plotdna_access_token.
  5. 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}"
  1. Open an area report, click Pay Rs 499, enter contact and buyer context, then click Download 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.

Email OTP delivery

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=true

If 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.


Payments

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:

  1. Razorpay webhooks are the primary production recognition path. Configure RAZORPAY_WEBHOOK_SECRET and subscribe Razorpay to POST /api/leads/razorpay/webhook; a signed payment_link.paid event marks the matching PlotDNA lead as paid.
  2. The frontend remembers when a user leaves for Razorpay and re-checks paid access when the browser tab or mobile webview becomes active again.
  3. Returning users can recover access with the same email and phone used for Razorpay; this is the normal cross-device path.
  4. 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.


Architecture

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.

Curated Market Intelligence

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

Dynamic Analysis

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

See docs/COVERAGE_TIERS.md.


Repository Layout

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

Local Development

Frontend

cd frontend
npm install
npm run dev

Runs 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 build

Backend

cd backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload

Runs at http://localhost:8000.

Backend entitlement checks:

cd backend
python -m unittest tests.test_report_entitlements

Release Notes

Current 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.

Recommended Next Engineering Move

The highest-value next technical step is backend-backed Razorpay Checkout:

  1. create backend orders for Rs 99 and Rs 499 packages
  2. verify Razorpay payment signatures
  3. grant report entitlements after payment success or webhook confirmation
  4. keep admin/test bypasses for internal QA
  5. 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.


Safety Positioning

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.

About

helps buyers decide where to buy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages