finwipe 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,786 +6,300 @@ FinWipe is an open-source CLI tool that helps Indian citizens exercise their **r
6
6
 
7
7
  Every request gets a unique **DPR-ID** (e.g., `DPR-2026-000001`) for full auditability. All data stays on **YOUR machine**.
8
8
 
9
- ## 📊 By the Numbers
10
-
11
- | Metric | Value |
12
- |--------|------:|
13
- | **npm downloads** | **0** |
14
- | GitHub stars | ⭐0 |
15
- | Registry | 91 entities (12 banks, 18 NBFCs, 59 fintechs, 2 HFCs) |
16
- | Monthly requests | 5,000+ (estimated) |
17
- | Success rate | 38% avg (shame list varies) |
18
- | Legal basis | DPDP Act 2023 + RBI DLG |
19
-
20
- ## 🚨 Status: **Not published yet**
21
-
22
- FinWipe is **not available on npm** (e.g., `npm install finwipe` returns package not found).
23
-
24
- **However:** The repository is ready for publishing once all components are completed and tested.
25
-
26
- ## Key Features
27
-
28
- - 📧 **Email + Registered Post** — Send deletion requests via multiple channels
29
- - 🏛️ **Legal Enforcement** — Escalate to DPDP Board, RBI Ombudsman, Consumer Forum
30
- - 📊 **Audit Trail** — Full DPR-ID tracking for compliance verification
31
- - 📱 **Multi-Platform** — Parse emails, PDFs, CIBIL reports, WhatsApp, AA apps
32
- - 🏢 **Cloud Integration** — Forwarder service for passive FI discovery
33
- - ⚡ **Automation** — Cron-based follow-ups and escalations
9
+ ---
34
10
 
35
- ## Installation
11
+ ## 🚀 Install
36
12
 
13
+ **Option 1 — npm (recommended, cross-platform):**
37
14
  ```bash
38
- # Quick install from this repo
39
- cd finwipe
40
- go build -o finwipe ./cmd/finwipe
41
-
42
- # Future (after publishing to npm)
43
15
  npm install -g finwipe
44
- finwipe init
45
16
  ```
46
17
 
47
- ## Commands
48
-
49
- ### Core Commands
50
- - `finwipe new` — Create deletion request (DPR-ID)
51
- - `finwipe send` — Dispatch via email/post
52
- - `finwipe track` — Monitor request lifecycle
53
- - `finwipe escalate` — File complaints with authorities
54
-
55
- ### Discovery Commands
56
- - `finwipe discover-from-cibil` — Parse CIBIL reports
57
- - `finwipe discover-from-bank-statement` — Extract FIs from bank statements
58
- - `finwipe discover-from-email` — Scan Takeout exports
59
- - `finwipe discover-from-whatsapp` — Parse WhatsApp chats
60
- - `finwipe discover-from-aa` — Pull from Account Aggregator apps
61
-
62
- ### Enforcement Commands
63
- - `finwipe dpd-board` — Generate DPBB complaints
64
- - `finwipe portability` — Request data exports
65
- - `finwipe verify` — Confirm deletions
66
- - `finwipe compliance --shame` — Community shame list
67
-
68
- ## Development Status
69
-
70
- **Current State:** Development complete, testing in progress
71
- **Expected Release:** When all features are tested and cloud deployment is ready
72
-
73
- ## Usage
74
-
18
+ **Option 2 — Homebrew (macOS/Linux):**
75
19
  ```bash
76
- # Quick setup and demo
77
- ./finwipe init # Configure your profile
78
- ./finwipe discover-from-cibil --file your_cibil_report.pdf --auto
79
- ./finwipe send --dry-run # Preview deletion requests
80
- ./finwipe send # Send all requests
81
- ./finwipe track --all # Monitor progress
20
+ brew tap das-rebel/finwipe
21
+ brew install finwipe
82
22
  ```
83
23
 
84
- ## Legal Disclaimer
85
-
86
- FinWipe helps you exercise your legal rights:
87
- - **Section 8(6)** — Right to erasure
88
- - **Section 6(9)** — Right to data portability
89
- - **RBI DLG** — Lending guidelines
90
-
91
- **Limitation:** NBFCs may not respond within 30 days. However, you have evidence of requests and a clear escalation path to authorities.
92
-
93
- ## Tech Stack
94
-
95
- - **Go 1.21+** — Single binary, no external deps
96
- - **Cobra** — CLI framework
97
- - **SQLite (WAL)** — Request history
98
- - **gofpdf** — PDF generation
99
- - **Viper** — Configuration management
100
-
101
- ## Files
102
-
103
- - `cmd/finwipe/` — Main CLI application
104
- - `internal/` — Core business logic
105
- - `data/nbfcs.yaml` — 91-entity registry
106
- - `templates/` — Email/letter templates
107
- - `README.md` — This documentation
108
-
109
- ## Future Plans
110
-
111
- Once published, the roadmap includes:
112
-
113
- 1. **npm Publication** — Ready to publish to npm
114
- 2. **GitHub Actions** — Monthly automation
115
- 3. **Cloud Integration** — Full forwarder service
116
- 4. **Mobile App** — Android/iOS companion
117
- 5. **Community Dashboard** — Show compliance rates publicly
118
- 6. **Legal Templates** — Pre-filled court filings
119
- 7. **Compliance Tools** — Automated escalation workflows
120
-
121
- ## Helping You Start
122
-
24
+ **Option 3 — Direct binary (no package manager):**
123
25
  ```bash
124
- # First steps
125
- cd finwipe
126
- ./finwipe init # Your profile
127
- ./finwipe list # Browse FIs
128
- ./finwipe discover-from-cibil --file your_report.pdf --auto
129
- ./finwipe send # Start deletion requests
130
- ./finwipe track --all # Monitor progress
26
+ # macOS (Apple Silicon)
27
+ curl -fsSL https://github.com/Das-rebel/finwipe/releases/latest/download/finwipe-darwin-arm64 -o finwipe
28
+ chmod +x finwipe && sudo mv finwipe /usr/local/bin/
131
29
  ```
132
30
 
133
- **"Your financial data. Your rules."**
134
-
135
- ---
136
-
137
- ## The Problem
138
-
139
- Indian citizens have no easy way to:
140
- - Know which NBFCs, fintechs, and lenders hold their data
141
- - Send legally-grounded deletion requests at scale
142
- - Track which entities complied vs. ignored requests
143
- - Escalate non-compliant entities to the Data Protection Board
144
-
145
- **FinWipe solves all of this.**
146
-
147
- ---
148
-
149
- ## The Solution
150
-
31
+ **Option 4 Build from source:**
32
+ ```bash
33
+ git clone https://github.com/das-rebel/finwipe
34
+ cd finwipe && go build -o finwipe ./cmd/finwipe
151
35
  ```
152
- ┌─────────────────────────────────────────────────────────────────┐
153
- │ YOUR MACHINE │
154
- │ │
155
- finwipe new --nbfc-id bajaj-finserv │
156
- │ finwipe send │
157
- │ finwipe track --request-id DPR-2026-000001 │
158
- │ finwipe dpd-board --request-id DPR-2026-000001 │
159
- │ │
160
- │ All data: ~/.finwipe/ │
161
- │ • history.db — SQLite with full audit trail │
162
- │ • letters/ — PDF deletion letters │
163
- │ • config.yaml — Your profile + SMTP │
164
- │ • evidence/ — Screenshots, acknowledgments │
165
- └─────────────────────────────────────────────────────────────────┘
36
+
37
+ Verify it works:
38
+ ```bash
39
+ finwipe --help
166
40
  ```
167
41
 
168
42
  ---
169
43
 
170
- ## Quick Start
44
+ ## Quick Start (5 Steps)
171
45
 
172
46
  ```bash
173
- # 1. Install
174
- git clone https://github.com/das-rebel/finwipe
175
- cd finwipe
176
- go build -o finwipe ./cmd/finwipe
47
+ # 1. Set up your profile (name, email, SMTP)
48
+ finwipe init
177
49
 
178
- # 2. Setup (one-time)
179
- ./finwipe init
50
+ # 2. Browse the 91-entity registry
51
+ finwipe list --category fintech
180
52
 
181
- # 3. Preview what would happen
182
- ./finwipe send --dry-run
53
+ # 3. Create a deletion request
54
+ finwipe new --nbfc-id bajaj-finserv
183
55
 
184
- # 4. Send deletion emails
185
- ./finwipe send
56
+ # 4. Preview, then send
57
+ finwipe send --dry-run # preview first
58
+ finwipe send # actually send emails
186
59
 
187
60
  # 5. Track responses
188
- ./finwipe track --all
61
+ finwipe track --all
189
62
  ```
190
63
 
191
64
  ---
192
65
 
193
- ## Core Commands
66
+ ## 📋 Core Commands
194
67
 
195
68
  ### `finwipe init`
196
- Initialize your profile with name, email, address, and SMTP credentials.
197
-
69
+ One-time setup. Saves to `~/.finwipe/config.yaml`.
198
70
  ```bash
199
- ./finwipe init
200
- # Interactive asks for:
201
- # Full name
202
- # Email address
203
- # • Address (for registered post)
204
- # • SMTP host (e.g., smtp.gmail.com)
205
- # • SMTP port (e.g., 587)
206
- # • SMTP username (your email)
207
- # • SMTP password (app password)
71
+ finwipe init
72
+ # Interactive prompts for:
73
+ # Full name, email, phone, address
74
+ # SMTP host (e.g. smtp.gmail.com), port (587), username, app password
208
75
  ```
209
76
 
210
- Config saved to `~/.finwipe/config.yaml`
211
-
212
- ---
213
-
214
77
  ### `finwipe list`
215
- Browse the 91 registered NBFCs, banks, fintechs, and HFCs.
216
-
78
+ Browse 91 registered entities.
217
79
  ```bash
218
- ./finwipe list
219
- ./finwipe list --category fintech
220
- ./finwipe list --category bank
221
- ./finwipe list --search HDFC
222
- ./finwipe list --json
80
+ finwipe list # all 91
81
+ finwipe list --category fintech # 59 fintechs
82
+ finwipe list --category bank # 12 banks
83
+ finwipe list --category nbfc # 18 NBFCs
84
+ finwipe list --search HDFC # search by name
85
+ finwipe list --json # JSON output
223
86
  ```
224
87
 
225
- **Categories:** `bank` (12) · `nbfc` (18) · `fintech` (59) · `hfc` (2)
226
-
227
- ---
228
-
229
88
  ### `finwipe new`
230
- Create a new deletion request. Returns a **DPR-ID** for tracking.
231
-
89
+ Create a deletion request returns a **DPR-ID**.
232
90
  ```bash
233
- # Single NBFC
234
- ./finwipe new --nbfc-id bajaj-finserv
235
-
236
- # Batch by category
237
- ./finwipe new --batch fintech --count 10
238
-
239
- # With specific categories
240
- ./finwipe new --nbfc-id bajaj-finserv \
241
- --categories marketing,third_party,app_usage
91
+ finwipe new --nbfc-id bajaj-finserv
92
+ finwipe new --nbfc-id tata-capital --categories marketing,third_party
242
93
  ```
243
94
 
244
- **DPDPA Deletion Categories:**
245
- - `marketing` — Promotional and marketing communications
246
- - `third_party` — Data shared with third parties
247
- - `behavioral` — Behavioral and usage data
248
- - `app_usage` — App activity and preferences
249
- - `call_records` — Call recordings and service logs
250
- - `loan_profile` — Pre-approved loan offers and credit profile
251
- - `all_non_essential` — Everything except legally required data
252
-
253
- ---
95
+ **Deletion categories:** `marketing` · `third_party` · `behavioral` · `app_usage` · `call_records` · `loan_profile` · `all_non_essential`
254
96
 
255
97
  ### `finwipe send`
256
- Dispatch deletion requests via email or registered post.
257
-
98
+ Dispatch requests via email or registered post.
258
99
  ```bash
259
- # Send all pending requests
260
- ./finwipe send
261
-
262
- # Dry run (preview)
263
- ./finwipe send --dry-run
264
-
265
- # Specific request
266
- ./finwipe send --request-id DPR-2026-000001
267
-
268
- # Rate limit (ms between emails)
269
- ./finwipe send --rate-limit 2000
270
-
271
- # Via registered post (generates letter PDFs)
272
- ./finwipe send --channel post
273
-
274
- # Via CIC (in-person filing)
275
- ./finwipe send --channel cic
100
+ finwipe send --dry-run # preview (no emails sent)
101
+ finwipe send # send all pending
102
+ finwipe send --request-id DPR-2026-000001
103
+ finwipe send --rate-limit 2000 # 2s between emails
104
+ finwipe send --channel post # generate PDF letters
276
105
  ```
277
106
 
278
- ---
279
-
280
107
  ### `finwipe track`
281
- Track deletion request lifecycle and audit trail.
282
-
108
+ Monitor the full lifecycle.
283
109
  ```bash
284
- # Track specific request
285
- ./finwipe track --request-id DPR-2026-000001
286
-
287
- # All active requests
288
- ./finwipe track --all
289
-
290
- # Requests overdue (past acknowledgment deadline)
291
- ./finwipe track --overdue
292
-
293
- # Requests awaiting acknowledgment
294
- ./finwipe track --awaiting-ack
295
-
296
- # Escalated requests
297
- ./finwipe track --escalated
110
+ finwipe track --request-id DPR-2026-000001
111
+ finwipe track --all # all active
112
+ finwipe track --overdue # past deadline
113
+ finwipe track --awaiting-ack # no response yet
298
114
  ```
299
115
 
300
- **Request Lifecycle:**
116
+ **Lifecycle:**
301
117
  ```
302
118
  INITIATED → DISPATCHED → ACK_RECEIVED → RESPONSE_OK → CLOSED
303
-
304
- AWAITING_ACK
305
-
306
- DELIVERY_FAILED (retry)
307
-
308
- ESCALATED
309
-
310
- DPDP_BOARD / RBI_OMBUDSMAN / CONSUMER_FORUM
311
-
312
- CLOSED
119
+
120
+ AWAITING_ACK ESCALATED
121
+
122
+ DELIVERY_FAILED DPDP_BOARD / RBI_OMBUDSMAN
313
123
  ```
314
124
 
315
- ---
316
-
317
125
  ### `finwipe ack`
318
- Record when an NBFC acknowledges your deletion request.
319
-
320
- ```bash
321
- ./finwipe ack --request-id DPR-2026-000001
322
- ./finwipe ack --request-id DPR-2026-000001 --reference ABC123XYZ
323
- ```
324
-
325
- ---
326
-
327
- ### `finwipe followup`
328
- Send follow-up emails after 48 hours of no acknowledgment.
329
-
126
+ Record an NBFC's acknowledgment.
330
127
  ```bash
331
- # Follow up on all awaiting-ack requests
332
- ./finwipe followup
333
-
334
- # Specific request
335
- ./finwipe followup --request-id DPR-2026-000001
128
+ finwipe ack --request-id DPR-2026-000001
129
+ finwipe ack --request-id DPR-2026-000001 --reference ABC123XYZ
336
130
  ```
337
131
 
338
- ---
339
-
340
132
  ### `finwipe escalate`
341
- Escalate ignored requests to higher authorities.
342
-
133
+ Escalate ignored requests up the chain.
343
134
  ```bash
344
- # Escalate to NBFC's DPO (Data Protection Officer)
345
- ./finwipe escalate --request-id DPR-2026-000001 --to dpo
346
-
347
- # Escalate to DPDP Board (Section 27(3))
348
- ./finwipe escalate --request-id DPR-2026-000001 --to dpd_board
349
-
350
- # Escalate to RBI Ombudsman
351
- ./finwipe escalate --request-id DPR-2026-000001 --to rbi_ombudsman
352
-
353
- # Escalate to Consumer Forum
354
- ./finwipe escalate --request-id DPR-2026-000001 --to consumer_forum
135
+ finwipe escalate --request-id DPR-2026-000001 --to dpo # L1: Data Protection Officer
136
+ finwipe escalate --request-id DPR-2026-000001 --to dpd_board # L2: DPDP Board §27(3)
137
+ finwipe escalate --request-id DPR-2026-000001 --to rbi_ombudsman # L3: RBI
138
+ finwipe escalate --request-id DPR-2026-000001 --to consumer_forum # L3: Consumer Forum
355
139
  ```
356
140
 
357
- **Escalation Path:**
358
- ```
359
- L0 → L1: DPO (7 days no ack)
360
- L1 → L2: DPDP Board (30 days no response)
361
- L2 → L3: RBI Ombudsman / Consumer Forum
362
- ```
363
-
364
- ---
365
-
366
141
  ### `finwipe close`
367
- Close a request with outcome.
368
-
142
+ Close a request with an outcome.
369
143
  ```bash
370
- ./finwipe close --request-id DPR-2026-000001
371
- ./finwipe close --request-id DPR-2026-000001 --outcome deleted
372
- ./finwipe close --request-id DPR-2026-000001 \
373
- --outcome rejected --notes "NBFC claimed data already deleted"
144
+ finwipe close --request-id DPR-2026-000001 --outcome deleted
145
+ finwipe close --request-id DPR-2026-000001 --outcome rejected --notes "claimed already deleted"
374
146
  ```
375
147
 
376
- **Outcomes:** `deleted` · `acknowledged_not_deleted` · `partial` · `rejected` · `exemption_claimed` · `no_response` · `escalated`
377
-
378
- ---
148
+ **Outcomes:** `deleted` · `acknowledged_not_deleted` · `partial` · `rejected` · `exemption_claimed` · `no_response`
379
149
 
380
150
  ### `finwipe report`
381
- Dashboard showing compliance metrics.
382
-
151
+ Dashboard with compliance metrics.
383
152
  ```bash
384
- ./finwipe report
385
- ./finwipe report --days 30
386
- ./finwipe report --format json
387
- ./finwipe report --format csv
153
+ finwipe report
154
+ finwipe report --days 30 --format json
388
155
  ```
389
156
 
390
157
  ---
391
158
 
392
- ### `finwipe compliance`
393
- Track NBFC compliance rates (anonymized community data).
159
+ ## 🔍 Discovery Commands
394
160
 
395
- ```bash
396
- ./finwipe compliance
397
- ./finwipe compliance --shame
398
- ```
399
-
400
- **Shame List:** Ranks NBFCs by worst acknowledgment rates.
401
-
402
- ---
403
-
404
- ## Discovery Commands
405
-
406
- Find out which entities hold your data before sending deletion requests.
161
+ Find out **who holds your data** before sending requests.
407
162
 
408
163
  ### `finwipe discover-from-cibil`
409
- Parse a CIBIL credit report PDF and auto-generate deletion requests for every institution that queried your report.
410
-
164
+ Parse a CIBIL report PDF auto-create requests for every institution that queried your credit.
411
165
  ```bash
412
- ./finwipe discover-from-cibil --file your_cibil_report.pdf
413
- ./finwipe discover-from-cibil --file report.pdf --auto
166
+ finwipe discover-from-cibil --file your_cibil_report.pdf --auto
414
167
  ```
415
168
 
416
- **How it works:**
417
- 1. CIBIL shows every institution that queried your credit report
418
- 2. These are FIs that have done due diligence on you
419
- 3. Cross-references against 91-entity registry
420
- 4. Creates deletion requests for matched entities
421
-
422
- ---
423
-
424
169
  ### `finwipe discover-from-bureau`
425
- Parse credit bureau reports from all 4 bureaus: CIBIL, Experian, Equifax, CRIF HighMark.
426
-
170
+ All 4 bureaus: CIBIL, Experian, Equifax, CRIF HighMark.
427
171
  ```bash
428
- ./finwipe discover-from-bureau --file Experian_Report.pdf
429
- ./finwipe discover-from-bureau --file CRIF_HighMark.pdf --auto
172
+ finwipe discover-from-bureau --file Experian_Report.pdf --auto
430
173
  ```
431
174
 
432
- ---
433
-
434
175
  ### `finwipe discover-from-bank-statement`
435
- Extract financial institution references from bank statement PDFs.
436
-
176
+ Extract FI references from bank statement PDFs (EMI deductions, NACH mandates).
437
177
  ```bash
438
- ./finwipe discover-from-bank-statement --file statement.pdf
439
- ./finwipe discover-from-bank-statement --directory ./statements/
440
- ./finwipe discover-from-bank-statement --bank hdfc --auto
178
+ finwipe discover-from-statement --file statement.pdf
179
+ finwipe discover-from-statement --directory ./statements/ --auto
441
180
  ```
442
181
 
443
- **Parses:**
444
- - EMI deductions (identifies lender)
445
- - NACH/NECS references
446
- - Transaction descriptions with FI names
447
- - Standing instruction mandates
448
-
449
- ---
450
-
451
182
  ### `finwipe discover-from-email`
452
- Parse Gmail Takeout exports to find financial institutions.
453
-
183
+ Parse Gmail Takeout exports.
454
184
  ```bash
455
- ./finwipe discover-from-email --file gmail_export.zip
456
- ./finwipe discover-from-email --format mbox --auto
185
+ finwipe discover-from-email --file gmail_export.zip --auto
457
186
  ```
458
187
 
459
- **Supported formats:** ZIP (Takeout), MBOX, CSV, plain text
460
-
461
- ---
462
-
463
188
  ### `finwipe discover-from-whatsapp`
464
189
  Extract FI contacts from WhatsApp Business chat exports.
465
-
466
190
  ```bash
467
- ./finwipe discover-from-whatsapp --path ./whatsapp_chat.txt
468
- ./finwipe discover-from-whatsapp --auto
191
+ finwipe discover-from-whatsapp --path ./whatsapp_chat.txt
469
192
  ```
470
193
 
471
- **How to export WhatsApp chats:**
472
- 1. iPhone: WhatsApp → Chat → Export Chat
473
- 2. Android: GB WhatsApp → Chat → Export
474
-
475
- ---
476
-
477
194
  ### `finwipe discover-from-aa`
478
195
  Discover FIs via Account Aggregator apps (NADL, CAMS, SAafe, Finvu).
479
-
480
196
  ```bash
481
- ./finwipe discover-from-aa --provider nadl
482
- ./finwipe discover-from-aa --provider cams --auto
197
+ finwipe discover-from-aa --provider nadl
483
198
  ```
484
199
 
485
- **What it does:**
486
- 1. Opens AA app login page in browser
487
- 2. You authenticate with phone + OTP
488
- 3. AA shows all linked financial accounts (FIPs)
489
- 4. These are entities that have your financial data
490
-
491
- **AA Providers:** NADL · CAMS · SAafe · Finvu
492
-
493
200
  ---
494
201
 
495
- ## Enforcement Commands
496
-
497
- ### `finwipe dpd-board`
498
- Generate a pre-filled complaint to the **Data Protection Board of India** (DPBB).
499
-
500
- ```bash
501
- ./finwipe dpd-board --request-id DPR-2026-000001
502
- ./finwipe dpd-board --nbfc-id bajaj-finserv \
503
- --name "John Doe" --email john@example.com
504
- ```
505
-
506
- **What it generates:**
507
- - Pre-filled Form III complaint
508
- - Timeline of your deletion requests
509
- - Legal basis: Section 8(6), DPDP Act 2023
510
- - Relief sought: deletion + penalty
511
-
512
- **How to file:**
513
- 1. Online: https://dpdpboard.gov.in → File Complaint → Form III
514
- 2. Email: complaints@dpdpboard.gov.in
515
-
516
- **DPBB Powers:**
517
- - Order data deletion: Section 27(3)(i)
518
- - Impose penalty up to ₹250 crore: Section 33
519
- - Investigate systemic non-compliance: Section 27(4)
520
-
521
- ---
202
+ ## ⚖️ Enforcement Commands
522
203
 
523
204
  ### `finwipe portability`
524
- Request **all data** an entity holds about you (Section 6(9), DPDP Act).
525
-
205
+ Request **all data** an entity holds about you (§6(9), DPDP Act). Company must respond in 72 hours.
526
206
  ```bash
527
- ./finwipe portability --nbfc-id bajaj-finserv
528
- ./finwipe portability --nbfc-id tata-capital --send
207
+ finwipe portability --nbfc-id bajaj-finserv
208
+ finwipe portability --nbfc-id tata-capital --send
529
209
  ```
530
210
 
531
- **Why it matters:**
532
- - Deletion: "Delete my data" (company may say done, not prove it)
533
- - Portability: "Give me all data you have" (you verify what they actually hold)
534
- - Use both: portability first, then deletion
535
-
536
- **Company must respond within 72 hours** (Section 6(9))
537
-
538
- ---
539
-
540
211
  ### `finwipe verify`
541
- Verify if an NBFC actually deleted your data.
542
-
212
+ Confirm an NBFC actually deleted your data.
543
213
  ```bash
544
- ./finwipe verify --request-id DPR-2026-000001
545
- ./finwipe verify --request-id DPR-2026-000001 --method certificate
214
+ finwipe verify --request-id DPR-2026-000001 --method certificate
546
215
  ```
547
-
548
- **Verification Methods:**
549
- - `email` — Send verification email asking to confirm deletion
550
- - `certificate` — Request official deletion certificate
551
- - `login` — Try to access service (account should fail if deleted)
552
-
553
- ---
216
+ **Methods:** `email` · `certificate` · `login`
554
217
 
555
218
  ### `finwipe mass-request`
556
- Send deletion requests to ALL entities in a category with one command.
557
-
558
- ```bash
559
- # All fintechs
560
- ./finwipe mass-request --category fintech
561
-
562
- # All banks except HDFC and ICICI
563
- ./finwipe mass-request --category bank \
564
- --exclude hdfc-bank,icici-bank
565
-
566
- # First 10 entities randomly
567
- ./finwipe mass-request --category all --count 10
568
-
569
- # Dry run preview
570
- ./finwipe mass-request --category fintech --dry-run
571
- ```
572
-
573
- ⚠️ **Warning:** You will receive ~90 acknowledgment emails!
574
-
575
- ---
576
-
577
- ## Automation Commands
578
-
579
- ### `finwipe cron`
580
- Daily automation: follow-ups, deadline checks, auto-escalation.
581
-
582
- ```bash
583
- # Dry run
584
- ./finwipe cron --dry-run
585
-
586
- # Full automation
587
- ./finwipe cron
588
-
589
- # Follow-up only
590
- ./finwipe cron --followup
591
-
592
- # Check escalation only
593
- ./finwipe cron --escalate
594
- ```
595
-
596
- **Cron schedule:**
597
- - Every morning: Check for overdue acknowledgments (48h+ no ack)
598
- - Day 3: Send follow-up emails
599
- - Day 7: Escalate to DPO
600
- - Day 30: Escalate to DPDP Board
601
-
602
- ---
603
-
604
- ### `finwipe setup-forward`
605
- Get your FinWipe cloud inbox for **passive** FI discovery (CRED/Fold model).
606
-
607
- ```bash
608
- ./finwipe setup-forward
609
- ```
610
-
611
- **How it works:**
612
- ```
613
- Gmail Filter (you set up once)
614
- ↓ FORWARDS all financial emails
615
- Mailgun (free: 5K/month)
616
- ↓ RECEIVES emails, extracts sender domain ONLY
617
- Cloudflare Worker
618
- ↓ MATCHES domains → known FIs
619
- finwipe sync
620
- ↓ PULLS discoveries
621
- finwipe sync --auto
622
- ↓ CREATES deletion requests
623
- ```
624
-
625
- **Privacy Guarantee:**
626
- - Email content NEVER received or stored
627
- - Only sender DOMAIN extracted (not full email)
628
- - User ID is one-way hash (no PII)
629
- - Data lives in your KV namespace only
630
-
631
- ---
632
-
633
- ### `finwipe sync`
634
- Sync discoveries from FinWipe cloud.
635
-
636
- ```bash
637
- # Show discoveries
638
- ./finwipe sync
639
-
640
- # Auto-create deletion requests
641
- ./finwipe sync --auto
642
-
643
- # Use local emails (offline)
644
- ./finwipe sync --import ~/.finwipe/forwarded/
645
- ```
646
-
647
- ---
648
-
649
- ### `finwipe check-inbox`
650
- Parse locally forwarded emails (no cloud required).
651
-
652
- ```bash
653
- ./finwipe check-inbox
654
- ./finwipe check-inbox --import /path/to/emails/
655
- ```
656
-
657
- ---
658
-
659
- ### `finwipe cloud-status`
660
- Check FinWipe cloud connectivity.
661
-
662
- ```bash
663
- ./finwipe cloud-status
664
- ```
665
-
666
- ---
667
-
668
- ## Supporting Commands
669
-
670
- ### `finwipe letter`
671
- Generate professional PDF deletion letters.
672
-
219
+ Send to ALL entities in a category at once.
673
220
  ```bash
674
- ./finwipe letter --nbfc-id bajaj-finserv
675
- ./finwipe letter --request-id DPR-2026-000001
676
- ./finwipe letter --batch fintech
221
+ finwipe mass-request --category fintech --dry-run
222
+ finwipe mass-request --category bank --exclude hdfc-bank,icici-bank
677
223
  ```
224
+ ⚠️ You'll receive ~90 acknowledgment emails.
678
225
 
679
- ---
680
-
681
- ### `finwipe evidence`
682
- Attach and manage evidence for deletion requests.
683
-
226
+ ### `finwipe compliance`
227
+ Community compliance rates + shame list.
684
228
  ```bash
685
- # Attach screenshot
686
- ./finwipe evidence attach DPR-2026-000001 \
687
- --type email_sent --file screenshot.png
688
-
689
- # Attach acknowledgment
690
- ./finwipe evidence attach DPR-2026-000001 \
691
- --type email_received --file acknowledgment.eml
692
-
693
- # List evidence
694
- ./finwipe evidence list DPR-2026-000001
695
-
696
- # Get evidence
697
- ./finwipe evidence get <evidence-id>
229
+ finwipe compliance
230
+ finwipe compliance --shame # worst offenders
698
231
  ```
699
232
 
700
- **Evidence Types:**
701
- - `email_sent` — Original deletion request email
702
- - `email_received` — NBFC's acknowledgment
703
- - `email_bounce` — Email bounce/failure notification
704
- - `letter_pdf` — Registered post acknowledgment
705
- - `dpd_board_filing` — DPBB complaint confirmation
706
- - `rbi_ombudsman_filing` — RBI complaint confirmation
707
- - `cic_receipt` — CIC in-person filing receipt
708
- - `screenshot` — Screenshots of interactions
709
-
710
233
  ---
711
234
 
712
- ### `finwipe cic`
713
- Generate pre-filled CIC (CIBIL/Experian/Equifax/CRIF) dispute forms.
235
+ ## 🤖 Automation
714
236
 
237
+ ### `finwipe cron`
238
+ Daily automation: follow-ups, deadline checks, auto-escalation.
715
239
  ```bash
716
- ./finwipe cic --bureau CIBIL
717
- ./finwipe cic --bureau Experian --nbfc-id bajaj-finserv
718
- ./finwipe cic --batch
240
+ finwipe cron --dry-run # preview
241
+ finwipe cron # full automation
719
242
  ```
243
+ **Schedule:** Day 3 → follow-up · Day 7 → DPO escalation · Day 30 → DPDP Board
720
244
 
721
- ---
722
-
723
- ### `finwipe parse`
724
- Parse a CIBIL report PDF to extract NBFC names.
725
-
245
+ ### `finwipe wizard`
246
+ Interactive guided flow for first-time users.
726
247
  ```bash
727
- ./finwipe parse --file your_cibil_report.pdf
728
- ./finwipe parse --file report.pdf --format text
248
+ finwipe wizard
729
249
  ```
730
250
 
731
- ---
732
-
733
251
  ### `finwipe ask`
734
- Interactive consent withdrawal wizard **works without `finwipe init`**.
735
-
252
+ Quick consent-withdrawal wizard (no `finwipe init` needed).
736
253
  ```bash
737
- ./finwipe ask
254
+ finwipe ask
738
255
  ```
739
256
 
740
- Answers questions, generates Section 8(7) withdrawal email, shows where to send it.
257
+ ### Monthly GitHub Actions
258
+ Fork the repo, add secrets (`SMTP_HOST`, `SMTP_PORT`, `SMTP_USERNAME`, `SMTP_PASSWORD`, `FINWIPE_FULL_NAME`, `FINWIPE_EMAIL`, `FINWIPE_PHONE`, `FINWIPE_ADDRESS`), and the workflow runs `finwipe send` monthly on the 1st.
741
259
 
742
260
  ---
743
261
 
744
- ### `finwipe wizard`
745
- Interactive guided deletion request flow.
262
+ ## 📄 Supporting Commands
746
263
 
747
- ```bash
748
- ./finwipe wizard
749
- ```
750
-
751
- Step-by-step walkthrough for first-time users.
264
+ | Command | Description |
265
+ |---------|-------------|
266
+ | `finwipe letter` | Generate PDF deletion letters |
267
+ | `finwipe evidence attach` | Attach screenshots/acknowledgments to a DPR-ID |
268
+ | `finwipe cic` | Generate CIC (CIBIL/Experian/Equifax/CRIF) dispute forms |
269
+ | `finwipe parse` | Parse CIBIL report → extract NBFC names |
270
+ | `finwipe update-registry` | Update NBFC registry from awesome-fintech-india |
271
+ | `finwipe setup-forward` | Set up FinWipe cloud inbox for passive discovery |
272
+ | `finwipe sync` | Sync discoveries from FinWipe cloud |
273
+ | `finwipe cloud-status` | Check cloud connectivity |
752
274
 
753
275
  ---
754
276
 
755
- ### `finwipe compliance --shame`
756
- NBFC shame list — ranks NBFCs by worst compliance rates.
757
-
758
- ```bash
759
- ./finwipe compliance --shame
760
- ./finwipe compliance --shame --export csv
761
- ```
277
+ ## 📊 By the Numbers
762
278
 
763
- Shows:
764
- - Acknowledgment rate
765
- - Average response time
766
- - Number of complaints
767
- - Recommended action
279
+ | Metric | Value |
280
+ |--------|------:|
281
+ | Version | 0.1.4 |
282
+ | Registry | 91 entities (12 banks · 18 NBFCs · 59 fintechs · 2 HFCs) |
283
+ | Legal basis | DPDP Act 2023 + RBI DLG |
284
+ | npm | [finwipe](https://www.npmjs.com/package/finwipe) |
285
+ | Homebrew | [das-rebel/finwipe](https://github.com/Das-rebel/homebrew-finwipe) |
768
286
 
769
287
  ---
770
288
 
771
- ## Legal Basis
772
-
773
- FinWipe invokes:
289
+ ## ⚖️ Legal Basis
774
290
 
775
291
  | Law | Section | Right |
776
292
  |-----|---------|-------|
777
- | DPDP Act 2023 | Section 8(6) | Right to Erasure |
778
- | DPDP Act 2023 | Section 6(9) | Right to Data Portability |
779
- | DPDP Act 2023 | Section 27(3) | Complaint to DPBB |
293
+ | DPDP Act 2023 | §8(6) | Right to Erasure |
294
+ | DPDP Act 2023 | §6(9) | Right to Data Portability |
295
+ | DPDP Act 2023 | §27(3) | Complaint to DPDP Board |
780
296
  | DPDP Rules 2025 | Rule 8(1) | 48-hour acknowledgment |
781
297
  | DPDP Rules 2025 | Rule 8(2) | Deletion within 30 days |
782
- | RBI DLG 2022 | Para 10.2, 11.1, 11.2 | Data deletion in lending |
783
-
784
- Read [docs/REGULATORY_FRAMEWORK.md](docs/REGULATORY_FRAMEWORK.md) for full details.
298
+ | RBI DLG 2022 | Para 10.2, 11.1 | Data deletion in lending |
785
299
 
786
300
  ---
787
301
 
788
- ## What CAN Be Deleted
302
+ ## What Can Be Deleted
789
303
 
790
304
  ```
791
305
  ✓ Marketing and promotional data
@@ -796,7 +310,7 @@ Read [docs/REGULATORY_FRAMEWORK.md](docs/REGULATORY_FRAMEWORK.md) for full detai
796
310
  ✓ App activity and preferences
797
311
  ```
798
312
 
799
- ## What CANNOT Be Deleted
313
+ ## What Cannot Be Deleted
800
314
 
801
315
  ```
802
316
  ✗ KYC documents (PMLA: 10 years post-closure)
@@ -807,109 +321,51 @@ Read [docs/REGULATORY_FRAMEWORK.md](docs/REGULATORY_FRAMEWORK.md) for full detai
807
321
 
808
322
  ---
809
323
 
810
- ## Architecture
324
+ ## 📁 Data Location
811
325
 
326
+ All data stays local at `~/.finwipe/`:
812
327
  ```
813
328
  ~/.finwipe/
814
- ├── config.yaml # Profile + SMTP credentials
815
- ├── history.db # SQLite WAL — full audit trail
816
- ├── inbox # FinWipe cloud inbox address
817
- ├── cloud_api_key # Cloud API key
818
- ├── letters/ # Generated PDF letters
819
- │ ├── Deletion_[nbfc]_[date].pdf
820
- │ ├── DPBB_complaint_[nbfc]_[date].pdf
821
- │ └── Portability_[nbfc]_[date].pdf
822
- ├── evidence/ # Screenshots, acknowledgments
823
- └── forwarded/ # Local forwarded emails
824
- ```
825
-
826
- **Database Schema:**
827
- ```sql
828
- requests: DPR-ID, NBFC, channel, state, timeline
829
- escalations: DPR-ID, level, channel, details
830
- evidence: DPR-ID, type, file, notes, timestamp
329
+ ├── config.yaml # Profile + SMTP
330
+ ├── history.db # SQLite (WAL) — full audit trail
331
+ ├── nbfcs.yaml # Entity registry
332
+ ├── letters/ # Generated PDFs
333
+ └── evidence/ # Screenshots, acknowledgments
831
334
  ```
832
335
 
833
336
  ---
834
337
 
835
- ## Registry
836
-
837
- The NBFC registry is at `data/nbfcs.yaml`. Add new entities:
838
-
839
- ```yaml
840
- - id: my-company
841
- name: My Finance Company Ltd
842
- short_name: MyFin
843
- category: nbfc # bank | nbfc | fintech | hfc
844
- grievance_email: grievance@myfin.com
845
- grievance_phone: "18001234567"
846
- address: "MyFin, Mumbai, MH"
847
- active: true
848
- ```
849
-
850
- ---
851
-
852
- ## Cloud Deployment
853
-
854
- Deploy FinWipe Cloud for passive email forwarding:
855
-
856
- ```bash
857
- cd apps/finwipe-cloud
858
- ./deploy.sh
859
- ```
860
-
861
- **Free tier:**
862
- - Cloudflare Workers: 100K requests/day
863
- - Cloudflare KV: 1M reads/day
864
- - Mailgun: 5K emails/month
865
-
866
- ---
867
-
868
- ## GitHub Actions Automation
869
-
870
- Fork and add secrets for monthly automation:
871
-
872
- ```bash
873
- # Secrets needed:
874
- SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD
875
- ```
876
-
877
- Workflow runs `./finwipe send --rate-limit 2000` monthly.
878
-
879
- ---
880
-
881
- ## The Honest Limitation
882
-
883
- FinWipe cannot guarantee NBFCs will respond within 30 days.
884
-
885
- It CAN guarantee:
886
- - ✅ Every request is timestamped
887
- - ✅ You have evidence of what was sent
888
- - ✅ You have legal documentation
889
- - ✅ You can escalate: DPO → DPDP Board → RBI Ombudsman
890
-
891
- ---
892
-
893
- ## Tech Stack
338
+ ## 🛠️ Tech Stack
894
339
 
895
340
  - **Go 1.21+** — single binary, no runtime deps
896
341
  - **Cobra** — CLI framework
897
- - **SQLite (WAL mode)** — request history
898
- - **gofpdf** — PDF letter generation
899
- - **Viper** — config management
342
+ - **SQLite (WAL)** — request history
343
+ - **gofpdf** — PDF generation
344
+ - **Viper** — configuration
900
345
 
901
346
  ---
902
347
 
903
- ## Contributing
348
+ ## 🤝 Contributing
904
349
 
905
- PRs welcome. Especially:
906
- - Adding NBFCs to `data/nbfcs.yaml`
907
- - New email templates
350
+ PRs welcome — especially:
351
+ - New NBFCs/fintechs in `data/nbfcs.yaml`
352
+ - Email/letter templates in `templates/`
908
353
  - Better PDF parsing
909
354
  - CIC dispute form improvements
910
355
 
911
356
  ---
912
357
 
358
+ ## 📦 Installation Links
359
+
360
+ | Platform | Command / Link |
361
+ |----------|---------------|
362
+ | **npm** | `npm install -g finwipe` |
363
+ | **Homebrew** | `brew tap das-rebel/finwipe && brew install finwipe` |
364
+ | **GitHub Releases** | [latest](https://github.com/Das-rebel/finwipe/releases/latest) |
365
+ | **Source** | `git clone https://github.com/das-rebel/finwipe` |
366
+
367
+ ---
368
+
913
369
  ## License
914
370
 
915
371
  MIT — Use it. Modify it. Distribute it. Delete your data.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "finwipe",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "DIY Financial Data Deletion tool for India under DPDP Act 2023. Exercise your right to erasure against NBFCs, banks, and fintechs.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -34,7 +34,11 @@
34
34
  "engines": {
35
35
  "node": ">=14.0.0"
36
36
  },
37
- "os": ["darwin", "linux", "win32"],
37
+ "os": [
38
+ "darwin",
39
+ "linux",
40
+ "win32"
41
+ ],
38
42
  "files": [
39
43
  "finwipe",
40
44
  "README.md",
@@ -0,0 +1,43 @@
1
+ Subject: Request for Erasure of Personal Data under Section 8(6), DPDP Act 2023 — {{.NBFCName}}
2
+
3
+ To,
4
+ The Grievance Officer / Data Protection Officer
5
+ {{.NBFCName}}
6
+ {{.NBFCCategory}}
7
+
8
+ Subject: Request for Erasure of Personal Data under Section 8(6) of the Digital Personal Data Protection Act, 2023 (DPDP Act)
9
+
10
+ Dear Sir/Madam,
11
+
12
+ I, {{.FullName}}, residing at {{.Address}}, am writing to exercise my right to erasure of personal data as provided under Section 8(6) of the Digital Personal Data Protection Act, 2023 (DPDP Act).
13
+
14
+ My details:
15
+ - Name: {{.FullName}}
16
+ - Email: {{.Email}}
17
+ - Phone: {{.Phone}}
18
+ - Request Reference: {{.RequestID}}
19
+
20
+ I request that {{.NBFCName}} erase all personal data held by your organization relating to me, except such data as may be necessary to retain under any law for the time being in force.
21
+
22
+ Specifically, I request deletion of:
23
+ {{range .Categories}}- {{.}}
24
+ {{end}}
25
+
26
+ This request is made under Section 8(6) of the DPDP Act, 2023 and Rule 8 of the DPDP Rules, 2025.
27
+
28
+ Please confirm receipt of this request within 48 hours as mandated under Rule 8(1) and proceed with the erasure within 30 days of this request.
29
+
30
+ If you fail to comply with this request within the stipulated timeframe, I reserve the right to escalate this matter to the Data Protection Board of India under Section 27(3) of the DPDP Act, 2023.
31
+
32
+ Please direct all future correspondence regarding this matter to:
33
+ - Email: {{.Email}}
34
+ - Address: {{.Address}}
35
+
36
+ Yours faithfully,
37
+ {{.FullName}}
38
+ {{.Email}}
39
+ {{.Phone}}
40
+
41
+ ---
42
+ Request ID: {{.RequestID}}
43
+ Date: {{.Date}}
@@ -0,0 +1,23 @@
1
+ Subject: Escalation to Data Protection Officer — {{.RequestID}} — No Response to Deletion Request
2
+
3
+ To: The Data Protection Officer
4
+ {{.NBFCName}}
5
+
6
+ Dear DPO,
7
+
8
+ I am escalating my data deletion request (Reference: {{.RequestID}}) as I have not received any acknowledgment or response from {{.NBFCName}} despite multiple follow-ups.
9
+
10
+ Request Details:
11
+ - Request ID: {{.RequestID}}
12
+ - Original Request Date: {{.RequestDate}}
13
+ - Categories Requested for Deletion: {{range .Categories}} {{.}} {{end}}
14
+ - Nature of Non-Compliance: No acknowledgment within 48 hours under Rule 8(1), no deletion within 30 days under Rule 8(2)
15
+
16
+ I request your immediate intervention to ensure compliance with Section 8(6) of the DPDP Act, 2023.
17
+
18
+ I reserve the right to escalate to the Data Protection Board of India if this matter is not resolved within 7 days.
19
+
20
+ Yours faithfully,
21
+ {{.FullName}}
22
+ {{.Email}}
23
+ {{.Phone}}
@@ -0,0 +1,19 @@
1
+ Subject: Follow-up: Erasure of Personal Data — {{.RequestID}} — No Response Received
2
+
3
+ Dear Grievance Officer / Data Protection Officer,
4
+
5
+ I am writing to follow up on my earlier request (Reference: {{.RequestID}}) dated {{.RequestDate}} for erasure of my personal data under Section 8(6) of the Digital Personal Data Protection Act, 2023.
6
+
7
+ As of today, I have not received:
8
+ 1. An acknowledgment of my deletion request, or
9
+ 2. Confirmation of data erasure
10
+
11
+ This is a second follow-up. If I do not receive a response within 7 days, I will escalate this matter to the Data Protection Board of India under Section 27(3) of the DPDP Act, 2023.
12
+
13
+ My original request reference: {{.RequestID}}
14
+
15
+ Please treat this as urgent.
16
+
17
+ Yours faithfully,
18
+ {{.FullName}}
19
+ {{.Email}}
@@ -0,0 +1,77 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <style>
5
+ body { font-family: Arial, sans-serif; margin: 40px; line-height: 1.6; }
6
+ .header { text-align: center; margin-bottom: 30px; }
7
+ .title { font-size: 20px; font-weight: bold; text-decoration: underline; }
8
+ .section { margin: 20px 0; }
9
+ .section-title { font-weight: bold; text-decoration: underline; }
10
+ .field { margin: 10px 0; }
11
+ .field-label { font-weight: bold; }
12
+ .signature { margin-top: 40px; }
13
+ .footer { margin-top: 30px; font-size: 12px; border-top: 1px solid #ccc; padding-top: 10px; }
14
+ </style>
15
+ </head>
16
+ <body>
17
+ <div class="header">
18
+ <div class="title">APPLICATION FOR ERASURE OF PERSONAL DATA</div>
19
+ <p>Under Section 8(6) of the Digital Personal Data Protection Act, 2023 (DPDP Act)</p>
20
+ </div>
21
+
22
+ <div class="section">
23
+ <div class="section-title">To,</div>
24
+ <p>The Grievance Officer / Data Protection Officer<br/>
25
+ {{.NBFCName}}<br/>
26
+ {{.NBFCAddress}}</p>
27
+ </div>
28
+
29
+ <div class="section">
30
+ <div class="section-title">Applicant Details:</div>
31
+ <div class="field"><span class="field-label">Name:</span> {{.FullName}}</div>
32
+ <div class="field"><span class="field-label">Email:</span> {{.Email}}</div>
33
+ <div class="field"><span class="field-label">Phone:</span> {{.Phone}}</div>
34
+ <div class="field"><span class="field-label">Address:</span> {{.Address}}</div>
35
+ </div>
36
+
37
+ <div class="section">
38
+ <div class="section-title">Request Details:</div>
39
+ <div class="field"><span class="field-label">Request ID:</span> {{.RequestID}}</div>
40
+ <div class="field"><span class="field-label">Date:</span> {{.Date}}</div>
41
+ <div class="field"><span class="field-label">Categories for Deletion:</div>
42
+ <ul>
43
+ {{range .Categories}}<li>{{.}}</li>{{end}}
44
+ </ul>
45
+ </div>
46
+
47
+ <div class="section">
48
+ <p>I hereby request that {{.NBFCName}} erase all personal data held by your organization relating to me, except such data as may be necessary to retain under any law for the time being in force, in accordance with Section 8(6) of the Digital Personal Data Protection Act, 2023.</p>
49
+ </div>
50
+
51
+ <div class="section">
52
+ <div class="section-title">Legal Basis:</div>
53
+ <ul>
54
+ <li>Section 8(6), DPDP Act 2023 — Right to Erasure</li>
55
+ <li>Rule 8(1), DPDP Rules 2025 — 48-hour acknowledgment requirement</li>
56
+ <li>Rule 8(2), DPDP Rules 2025 — 30-day deletion requirement</li>
57
+ </ul>
58
+ </div>
59
+
60
+ <div class="section">
61
+ <p>Please confirm receipt of this request within 48 hours and proceed with erasure within 30 days. Failure to comply will result in escalation to the Data Protection Board of India under Section 27(3) of the DPDP Act, 2023.</p>
62
+ </div>
63
+
64
+ <div class="signature">
65
+ <p>Yours faithfully,</p>
66
+ <p><strong>{{.FullName}}</strong></p>
67
+ <p>{{.Email}}</p>
68
+ <p>{{.Phone}}</p>
69
+ <p>{{.Address}}</p>
70
+ </div>
71
+
72
+ <div class="footer">
73
+ <p><strong>Request ID:</strong> {{.RequestID}} | <strong>Date:</strong> {{.Date}}</p>
74
+ <p>Generated by FinWipe — DIY Financial Data Deletion Tool for India</p>
75
+ </div>
76
+ </body>
77
+ </html>