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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
77
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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.
|
|
174
|
-
|
|
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.
|
|
179
|
-
|
|
50
|
+
# 2. Browse the 91-entity registry
|
|
51
|
+
finwipe list --category fintech
|
|
180
52
|
|
|
181
|
-
# 3.
|
|
182
|
-
|
|
53
|
+
# 3. Create a deletion request
|
|
54
|
+
finwipe new --nbfc-id bajaj-finserv
|
|
183
55
|
|
|
184
|
-
# 4.
|
|
185
|
-
|
|
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
|
-
|
|
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
|
-
|
|
197
|
-
|
|
69
|
+
One-time setup. Saves to `~/.finwipe/config.yaml`.
|
|
198
70
|
```bash
|
|
199
|
-
|
|
200
|
-
# Interactive
|
|
201
|
-
#
|
|
202
|
-
#
|
|
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
|
|
216
|
-
|
|
78
|
+
Browse 91 registered entities.
|
|
217
79
|
```bash
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
|
231
|
-
|
|
89
|
+
Create a deletion request → returns a **DPR-ID**.
|
|
232
90
|
```bash
|
|
233
|
-
|
|
234
|
-
|
|
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
|
-
**
|
|
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
|
|
257
|
-
|
|
98
|
+
Dispatch requests via email or registered post.
|
|
258
99
|
```bash
|
|
259
|
-
#
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
#
|
|
263
|
-
|
|
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
|
-
|
|
282
|
-
|
|
108
|
+
Monitor the full lifecycle.
|
|
283
109
|
```bash
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
#
|
|
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
|
-
**
|
|
116
|
+
**Lifecycle:**
|
|
301
117
|
```
|
|
302
118
|
INITIATED → DISPATCHED → ACK_RECEIVED → RESPONSE_OK → CLOSED
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
|
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
|
-
|
|
332
|
-
|
|
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
|
|
342
|
-
|
|
133
|
+
Escalate ignored requests up the chain.
|
|
343
134
|
```bash
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
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
|
-
|
|
371
|
-
|
|
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`
|
|
377
|
-
|
|
378
|
-
---
|
|
148
|
+
**Outcomes:** `deleted` · `acknowledged_not_deleted` · `partial` · `rejected` · `exemption_claimed` · `no_response`
|
|
379
149
|
|
|
380
150
|
### `finwipe report`
|
|
381
|
-
Dashboard
|
|
382
|
-
|
|
151
|
+
Dashboard with compliance metrics.
|
|
383
152
|
```bash
|
|
384
|
-
|
|
385
|
-
|
|
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
|
-
|
|
393
|
-
Track NBFC compliance rates (anonymized community data).
|
|
159
|
+
## 🔍 Discovery Commands
|
|
394
160
|
|
|
395
|
-
|
|
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
|
|
410
|
-
|
|
164
|
+
Parse a CIBIL report PDF → auto-create requests for every institution that queried your credit.
|
|
411
165
|
```bash
|
|
412
|
-
|
|
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
|
-
|
|
426
|
-
|
|
170
|
+
All 4 bureaus: CIBIL, Experian, Equifax, CRIF HighMark.
|
|
427
171
|
```bash
|
|
428
|
-
|
|
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
|
|
436
|
-
|
|
176
|
+
Extract FI references from bank statement PDFs (EMI deductions, NACH mandates).
|
|
437
177
|
```bash
|
|
438
|
-
|
|
439
|
-
|
|
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
|
|
453
|
-
|
|
183
|
+
Parse Gmail Takeout exports.
|
|
454
184
|
```bash
|
|
455
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
525
|
-
|
|
205
|
+
Request **all data** an entity holds about you (§6(9), DPDP Act). Company must respond in 72 hours.
|
|
526
206
|
```bash
|
|
527
|
-
|
|
528
|
-
|
|
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
|
-
|
|
542
|
-
|
|
212
|
+
Confirm an NBFC actually deleted your data.
|
|
543
213
|
```bash
|
|
544
|
-
|
|
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
|
|
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
|
-
|
|
675
|
-
|
|
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
|
-
|
|
686
|
-
|
|
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
|
-
|
|
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
|
-
|
|
717
|
-
|
|
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
|
-
|
|
728
|
-
./finwipe parse --file report.pdf --format text
|
|
248
|
+
finwipe wizard
|
|
729
249
|
```
|
|
730
250
|
|
|
731
|
-
---
|
|
732
|
-
|
|
733
251
|
### `finwipe ask`
|
|
734
|
-
|
|
735
|
-
|
|
252
|
+
Quick consent-withdrawal wizard (no `finwipe init` needed).
|
|
736
253
|
```bash
|
|
737
|
-
|
|
254
|
+
finwipe ask
|
|
738
255
|
```
|
|
739
256
|
|
|
740
|
-
|
|
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
|
-
|
|
745
|
-
Interactive guided deletion request flow.
|
|
262
|
+
## 📄 Supporting Commands
|
|
746
263
|
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
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
|
-
|
|
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
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
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 |
|
|
778
|
-
| DPDP Act 2023 |
|
|
779
|
-
| DPDP Act 2023 |
|
|
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
|
|
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
|
|
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
|
|
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
|
-
##
|
|
324
|
+
## 📁 Data Location
|
|
811
325
|
|
|
326
|
+
All data stays local at `~/.finwipe/`:
|
|
812
327
|
```
|
|
813
328
|
~/.finwipe/
|
|
814
|
-
├── config.yaml # Profile + SMTP
|
|
815
|
-
├── history.db # SQLite WAL — full audit trail
|
|
816
|
-
├──
|
|
817
|
-
├──
|
|
818
|
-
|
|
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
|
-
##
|
|
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
|
|
898
|
-
- **gofpdf** — PDF
|
|
899
|
-
- **Viper** —
|
|
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
|
|
906
|
-
-
|
|
907
|
-
-
|
|
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.
|
|
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": [
|
|
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>
|