
PROJECT
| Vismay Chandra | AUTHOR | ACTIVE |
| Varsha Shubhashri.M | COORDINATOR | ACTIVE |

MARVEL UVCE ā Level 3 Project | Vismay V Chandra
šŗ Watch the working demo Ā· š» GitHub repository
Home services today lack pricing transparency ā fixed-price platforms leave no room for fair, competitive quotes, and customers often overpay. Matching is also inefficient: customers struggle to find nearby, available technicians quickly, especially in urgent situations, while skilled technicians miss jobs due to limited visibility.
Affects: urban households, working professionals, families with limited time, and local technicians without access to a broader customer base.
Urban households Ā· working professionals Ā· families needing quick, reliable service Ā· local technicians seeking visibility and more job opportunities.
InnSelf is a mobile marketplace connecting homeowners with local service professionals (plumbers, electricians, cleaners, etc.) through real-time bidding. A customer posts a job, qualified nearby technicians bid, and the customer picks the best offer by price, rating, and distance ā an auction model that rewards competitive pricing and speed.
Services: Plumbing, Electrical, AC servicing, Carpentry, Cleaning, Appliance repair, Painting, Pest Control, Other. Platform: Android app (Flutter) + Supabase backend + in-app admin console. Geography: Hyperlocal, GPS-radius based ā no city hardcoded, launch city not yet chosen. Excluded: large construction/interior design, non-household services, insurance/complex disputes, equipment rental/logistics.
Not a prototype ā every item below is working in the shipped app.
Core loop: email/password auth with full password-reset flow Ā· customer/technician profiles with skills & service radius Ā· job posting with photos Ā· live bidding Ā· full status lifecycle (open ā accepted ā en route ā in progress ā completed) Ā· two-way reviews Ā· technician earnings wallet.
Trust & safety: government ID verification (PAN/Voter ID/Driving Licence ā Aadhaar deliberately excluded, since collecting it needs UIDAI authorisation InnSelf doesn't have, and masking the number alone wouldn't hide it in the uploaded photo) Ā· verified badge Ā· report & block (enforced at the database level, not just hidden client-side) Ā· admin console for KYC, disputes, and reports.
Location: real GPS distance matching within a technician's radius Ā· reverse geocoding with a permission-disclosure dialog before the OS prompt Ā· saved addresses Ā· auto-expiry of stale job posts with one-tap repost.
Coordination: in-app chat Ā· live "on my way" status with ETA Ā· push notifications Ā· a one-time 4-digit completion code (read by the customer, entered by the technician) that a job cannot be marked "done" without.
Operations: cancel/reschedule with a required reason Ā· historical price guidance from real accepted bids Ā· direct rebooking of a trusted technician.
Compliance: privacy policy, terms, account deletion ā all live Ā· location disclosure Ā· signed release build ready for Play Console.
Working demo (video): youtube.com/watch?v=Oi5fmY-tomg
Source code: github.com/VismayVChandra/innselfpro
Screenshots (customer app):
| Home feed | Post a job ā with price guidance |
|---|---|
![]() | ![]() |
| Live job progress | Completion code |
|---|---|
![]() | ![]() |
| In-app chat | Job expiry & repost |
|---|---|
![]() | ![]() |
| Payment & review | Profile ā with reward points |
|---|---|
![]() | ![]() |
| Reward points detail |
|---|
![]() |
Enforced server-side, not just in the UI: verification status and reward points are database-guarded so a user cannot self-edit them; blocking is a Row-Level Security rule on the messages table itself, not a client-side filter.
Built beyond the original proposal. Points are earned automatically, server-side, never client-editable:
| Action | Earner | Points |
|---|---|---|
| On-time arrival | Technician | +20 |
| Job completed | Technician | +30 |
| Prompt payment (24h) | Customer | +15 |
| Review left | Customer | +10 |
Spend: 50 points boosts a bid or job to the top of the relevant list, highlighted. Deliberately non-monetary ā no cash/discount conversion, since InnSelf takes no commission yet and a cash conversion adds payment-regulation complexity.
| Layer | Technology |
|---|---|
| Frontend | Flutter (Android native) |
| Backend | Supabase (Postgres, RLS, Realtime, Storage, Edge Functions) |
| Payments | Razorpay |
| Push notifications | Firebase Cloud Messaging |
| Legal pages | GitHub Pages |
A lean, fully managed stack ā no custom server to provision or patch.
| Platform | Pricing model | Limitation |
|---|---|---|
| Urban Company | Fixed pricing | No price negotiation |
| TaskRabbit | Service-fee based | Adds cost on top of quote |
| Thumbtack | Pay-per-lead | Technicians pay just to be seen |
| Handy | Standardised services | Limited technician choice |
| InnSelf | Real-time bidding | Transparent, competitive, hyperlocal |
Post job ā nearby technicians notified & bid ā customer compares and accepts ā technician goes "on my way" with ETA ā live chat ā technician starts job ā customer reads completion code, technician enters it ā job closes ā customer pays via Razorpay ā both sides review each other.
Real challenges solved: RLS recursion between jobs/bids policies (fixed with SECURITY DEFINER helper functions) Ā· trigger-only state transitions needing one-off backfills for pre-existing rows Ā· Supabase's PKCE deep-link flow for password reset, routed through a hosted page since email clients don't reliably forward raw redirects to custom URL schemes.
Planned: 10ā20% commission per completed job.
| Amount | |
|---|---|
| Service cost | ā¹1,000 |
| Commission (15%) | ā¹150 |
| Technician receives | ā¹850 |
Future streams: paid featured listings, subscriptions for professionals, in-app ads, surge pricing.
Current reality: no commission is taken yet ā free at launch to build trust and adoption first.
Razorpay handles in-app payment collection (UPI/card/wallet) once a job is confirmed complete via the one-time code. Not yet built: escrow-style holding and automatic commission-split payout to technicians (see Section 17).
Timeline (6ā8 weeks): UI/UX + frontend (wk 1-2) ā backend/DB (wk 3-4) ā bidding system (wk 5-6) ā testing (wk 6-7) ā deployment (wk 7-8).
Cost: Development ā¹0 (self-built) Ā· Play Store ā¹3,000 (actual ~ā¹2,000) Ā· Domain ā¹500-1,000 (not yet bought, using free GitHub Pages) Ā· Hosting ā¹0 free tier Ā· OTP ā¹500-1,000 (avoided ā email/password used instead) Ā· Misc ā¹1,000. Total: ā¹5,000āā¹7,000. Monthly: ā¹0āā¹500.
Status: Feature-complete and submission-ready ā signed release build done, legal pages live, Play Console submission underway.
Roadmap: AdMob advertising Ā· commission/escrow payments Ā· deeper reward system Ā· iOS release.
Honest gaps versus the original proposal:
Built differently, by choice: email/password instead of OTP (avoids SMS cost/dependency); non-monetary points-based boosts instead of paid featured listings.
InnSelf is a working Android app, not just a proposal ā combining real-time bidding, verified trust, live tracking, and secure payments into one product that's already feature-complete for launch. What remains is honestly scoped: full iOS support and the commission/escrow layer the business model depends on.
Vismay V Chandra ā MARVEL UVCE, Level 3 Project