finwipe 0.1.0
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/LICENSE +21 -0
- package/README.md +919 -0
- package/finwipe +0 -0
- package/package.json +44 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 FinWipe
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,919 @@
|
|
|
1
|
+
# FinWipe — DIY Financial Data Deletion for India
|
|
2
|
+
|
|
3
|
+
> **"Your financial data. Your rules."**
|
|
4
|
+
|
|
5
|
+
FinWipe is an open-source CLI tool that helps Indian citizens exercise their **right to erasure** under Section 8(6) of the Digital Personal Data Protection Act, 2023 (DPDP Act) and Rule 8 of the DPDP Rules, 2025.
|
|
6
|
+
|
|
7
|
+
Every request gets a unique **DPR-ID** (e.g., `DPR-2026-000001`) for full auditability. All data stays on **YOUR machine**.
|
|
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
|
|
34
|
+
|
|
35
|
+
## Installation
|
|
36
|
+
|
|
37
|
+
```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
|
+
npm install -g finwipe
|
|
44
|
+
finwipe init
|
|
45
|
+
```
|
|
46
|
+
|
|
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
|
+
|
|
75
|
+
```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
|
|
82
|
+
```
|
|
83
|
+
|
|
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
|
+
|
|
123
|
+
```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
|
|
131
|
+
```
|
|
132
|
+
|
|
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
|
+
|
|
151
|
+
```
|
|
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
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Quick Start
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# 1. Install
|
|
174
|
+
git clone https://github.com/das-rebel/finwipe
|
|
175
|
+
cd finwipe
|
|
176
|
+
go build -o finwipe ./cmd/finwipe
|
|
177
|
+
|
|
178
|
+
# 2. Setup (one-time)
|
|
179
|
+
./finwipe init
|
|
180
|
+
|
|
181
|
+
# 3. Preview what would happen
|
|
182
|
+
./finwipe send --dry-run
|
|
183
|
+
|
|
184
|
+
# 4. Send deletion emails
|
|
185
|
+
./finwipe send
|
|
186
|
+
|
|
187
|
+
# 5. Track responses
|
|
188
|
+
./finwipe track --all
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Core Commands
|
|
194
|
+
|
|
195
|
+
### `finwipe init`
|
|
196
|
+
Initialize your profile with name, email, address, and SMTP credentials.
|
|
197
|
+
|
|
198
|
+
```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)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Config saved to `~/.finwipe/config.yaml`
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
### `finwipe list`
|
|
215
|
+
Browse the 91 registered NBFCs, banks, fintechs, and HFCs.
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
./finwipe list
|
|
219
|
+
./finwipe list --category fintech
|
|
220
|
+
./finwipe list --category bank
|
|
221
|
+
./finwipe list --search HDFC
|
|
222
|
+
./finwipe list --json
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Categories:** `bank` (12) · `nbfc` (18) · `fintech` (59) · `hfc` (2)
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
### `finwipe new`
|
|
230
|
+
Create a new deletion request. Returns a **DPR-ID** for tracking.
|
|
231
|
+
|
|
232
|
+
```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
|
|
242
|
+
```
|
|
243
|
+
|
|
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
|
+
---
|
|
254
|
+
|
|
255
|
+
### `finwipe send`
|
|
256
|
+
Dispatch deletion requests via email or registered post.
|
|
257
|
+
|
|
258
|
+
```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
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
### `finwipe track`
|
|
281
|
+
Track deletion request lifecycle and audit trail.
|
|
282
|
+
|
|
283
|
+
```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
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**Request Lifecycle:**
|
|
301
|
+
```
|
|
302
|
+
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
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
### `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
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# Follow up on all awaiting-ack requests
|
|
332
|
+
./finwipe followup
|
|
333
|
+
|
|
334
|
+
# Specific request
|
|
335
|
+
./finwipe followup --request-id DPR-2026-000001
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
### `finwipe escalate`
|
|
341
|
+
Escalate ignored requests to higher authorities.
|
|
342
|
+
|
|
343
|
+
```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
|
|
355
|
+
```
|
|
356
|
+
|
|
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
|
+
### `finwipe close`
|
|
367
|
+
Close a request with outcome.
|
|
368
|
+
|
|
369
|
+
```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"
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**Outcomes:** `deleted` · `acknowledged_not_deleted` · `partial` · `rejected` · `exemption_claimed` · `no_response` · `escalated`
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
### `finwipe report`
|
|
381
|
+
Dashboard showing compliance metrics.
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
./finwipe report
|
|
385
|
+
./finwipe report --days 30
|
|
386
|
+
./finwipe report --format json
|
|
387
|
+
./finwipe report --format csv
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
### `finwipe compliance`
|
|
393
|
+
Track NBFC compliance rates (anonymized community data).
|
|
394
|
+
|
|
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.
|
|
407
|
+
|
|
408
|
+
### `finwipe discover-from-cibil`
|
|
409
|
+
Parse a CIBIL credit report PDF and auto-generate deletion requests for every institution that queried your report.
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
./finwipe discover-from-cibil --file your_cibil_report.pdf
|
|
413
|
+
./finwipe discover-from-cibil --file report.pdf --auto
|
|
414
|
+
```
|
|
415
|
+
|
|
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
|
+
### `finwipe discover-from-bureau`
|
|
425
|
+
Parse credit bureau reports from all 4 bureaus: CIBIL, Experian, Equifax, CRIF HighMark.
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
./finwipe discover-from-bureau --file Experian_Report.pdf
|
|
429
|
+
./finwipe discover-from-bureau --file CRIF_HighMark.pdf --auto
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
### `finwipe discover-from-bank-statement`
|
|
435
|
+
Extract financial institution references from bank statement PDFs.
|
|
436
|
+
|
|
437
|
+
```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
|
|
441
|
+
```
|
|
442
|
+
|
|
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
|
+
### `finwipe discover-from-email`
|
|
452
|
+
Parse Gmail Takeout exports to find financial institutions.
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
./finwipe discover-from-email --file gmail_export.zip
|
|
456
|
+
./finwipe discover-from-email --format mbox --auto
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
**Supported formats:** ZIP (Takeout), MBOX, CSV, plain text
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
### `finwipe discover-from-whatsapp`
|
|
464
|
+
Extract FI contacts from WhatsApp Business chat exports.
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
./finwipe discover-from-whatsapp --path ./whatsapp_chat.txt
|
|
468
|
+
./finwipe discover-from-whatsapp --auto
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
**How to export WhatsApp chats:**
|
|
472
|
+
1. iPhone: WhatsApp → Chat → Export Chat
|
|
473
|
+
2. Android: GB WhatsApp → Chat → Export
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
### `finwipe discover-from-aa`
|
|
478
|
+
Discover FIs via Account Aggregator apps (NADL, CAMS, SAafe, Finvu).
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
./finwipe discover-from-aa --provider nadl
|
|
482
|
+
./finwipe discover-from-aa --provider cams --auto
|
|
483
|
+
```
|
|
484
|
+
|
|
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
|
+
---
|
|
494
|
+
|
|
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
|
+
---
|
|
522
|
+
|
|
523
|
+
### `finwipe portability`
|
|
524
|
+
Request **all data** an entity holds about you (Section 6(9), DPDP Act).
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
./finwipe portability --nbfc-id bajaj-finserv
|
|
528
|
+
./finwipe portability --nbfc-id tata-capital --send
|
|
529
|
+
```
|
|
530
|
+
|
|
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
|
+
### `finwipe verify`
|
|
541
|
+
Verify if an NBFC actually deleted your data.
|
|
542
|
+
|
|
543
|
+
```bash
|
|
544
|
+
./finwipe verify --request-id DPR-2026-000001
|
|
545
|
+
./finwipe verify --request-id DPR-2026-000001 --method certificate
|
|
546
|
+
```
|
|
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
|
+
---
|
|
554
|
+
|
|
555
|
+
### `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
|
+
|
|
673
|
+
```bash
|
|
674
|
+
./finwipe letter --nbfc-id bajaj-finserv
|
|
675
|
+
./finwipe letter --request-id DPR-2026-000001
|
|
676
|
+
./finwipe letter --batch fintech
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
---
|
|
680
|
+
|
|
681
|
+
### `finwipe evidence`
|
|
682
|
+
Attach and manage evidence for deletion requests.
|
|
683
|
+
|
|
684
|
+
```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>
|
|
698
|
+
```
|
|
699
|
+
|
|
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
|
+
---
|
|
711
|
+
|
|
712
|
+
### `finwipe cic`
|
|
713
|
+
Generate pre-filled CIC (CIBIL/Experian/Equifax/CRIF) dispute forms.
|
|
714
|
+
|
|
715
|
+
```bash
|
|
716
|
+
./finwipe cic --bureau CIBIL
|
|
717
|
+
./finwipe cic --bureau Experian --nbfc-id bajaj-finserv
|
|
718
|
+
./finwipe cic --batch
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
### `finwipe parse`
|
|
724
|
+
Parse a CIBIL report PDF to extract NBFC names.
|
|
725
|
+
|
|
726
|
+
```bash
|
|
727
|
+
./finwipe parse --file your_cibil_report.pdf
|
|
728
|
+
./finwipe parse --file report.pdf --format text
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
---
|
|
732
|
+
|
|
733
|
+
### `finwipe ask`
|
|
734
|
+
Interactive consent withdrawal wizard — **works without `finwipe init`**.
|
|
735
|
+
|
|
736
|
+
```bash
|
|
737
|
+
./finwipe ask
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
Answers questions, generates Section 8(7) withdrawal email, shows where to send it.
|
|
741
|
+
|
|
742
|
+
---
|
|
743
|
+
|
|
744
|
+
### `finwipe wizard`
|
|
745
|
+
Interactive guided deletion request flow.
|
|
746
|
+
|
|
747
|
+
```bash
|
|
748
|
+
./finwipe wizard
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
Step-by-step walkthrough for first-time users.
|
|
752
|
+
|
|
753
|
+
---
|
|
754
|
+
|
|
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
|
+
```
|
|
762
|
+
|
|
763
|
+
Shows:
|
|
764
|
+
- Acknowledgment rate
|
|
765
|
+
- Average response time
|
|
766
|
+
- Number of complaints
|
|
767
|
+
- Recommended action
|
|
768
|
+
|
|
769
|
+
---
|
|
770
|
+
|
|
771
|
+
## Legal Basis
|
|
772
|
+
|
|
773
|
+
FinWipe invokes:
|
|
774
|
+
|
|
775
|
+
| Law | Section | Right |
|
|
776
|
+
|-----|---------|-------|
|
|
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 |
|
|
780
|
+
| DPDP Rules 2025 | Rule 8(1) | 48-hour acknowledgment |
|
|
781
|
+
| 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.
|
|
785
|
+
|
|
786
|
+
---
|
|
787
|
+
|
|
788
|
+
## What CAN Be Deleted
|
|
789
|
+
|
|
790
|
+
```
|
|
791
|
+
✓ Marketing and promotional data
|
|
792
|
+
✓ Third-party shared data
|
|
793
|
+
✓ Behavioral and usage data
|
|
794
|
+
✓ Pre-approved loan offer profiles
|
|
795
|
+
✓ Call recordings and service logs
|
|
796
|
+
✓ App activity and preferences
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
## What CANNOT Be Deleted
|
|
800
|
+
|
|
801
|
+
```
|
|
802
|
+
✗ KYC documents (PMLA: 10 years post-closure)
|
|
803
|
+
✗ Transaction records (RBI: 5-10 years)
|
|
804
|
+
✗ Active loan account data
|
|
805
|
+
✗ CIBIL's own records (separate fiduciary duty)
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
---
|
|
809
|
+
|
|
810
|
+
## Architecture
|
|
811
|
+
|
|
812
|
+
```
|
|
813
|
+
~/.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
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
---
|
|
834
|
+
|
|
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
|
|
894
|
+
|
|
895
|
+
- **Go 1.21+** — single binary, no runtime deps
|
|
896
|
+
- **Cobra** — CLI framework
|
|
897
|
+
- **SQLite (WAL mode)** — request history
|
|
898
|
+
- **gofpdf** — PDF letter generation
|
|
899
|
+
- **Viper** — config management
|
|
900
|
+
|
|
901
|
+
---
|
|
902
|
+
|
|
903
|
+
## Contributing
|
|
904
|
+
|
|
905
|
+
PRs welcome. Especially:
|
|
906
|
+
- Adding NBFCs to `data/nbfcs.yaml`
|
|
907
|
+
- New email templates
|
|
908
|
+
- Better PDF parsing
|
|
909
|
+
- CIC dispute form improvements
|
|
910
|
+
|
|
911
|
+
---
|
|
912
|
+
|
|
913
|
+
## License
|
|
914
|
+
|
|
915
|
+
MIT — Use it. Modify it. Distribute it. Delete your data.
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
**"Your financial data. Your rules."**
|
package/finwipe
ADDED
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "finwipe",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "DIY Financial Data Deletion tool for India under DPDP Act 2023. Exercise your right to erasure against NBFCs, banks, and fintechs.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"finwipe": "./finwipe"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "go build -o finwipe ./cmd/finwipe",
|
|
11
|
+
"test": "go test ./...",
|
|
12
|
+
"install": "go build -o finwipe ./cmd/finwipe",
|
|
13
|
+
"prepublishOnly": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"finwipe",
|
|
17
|
+
"dpdp-act",
|
|
18
|
+
"data-deletion",
|
|
19
|
+
"financial-privacy",
|
|
20
|
+
"india",
|
|
21
|
+
"right-to-erasure",
|
|
22
|
+
"nbfc",
|
|
23
|
+
"dpdp-board"
|
|
24
|
+
],
|
|
25
|
+
"author": "Das-rebel <sdas22@gmail.com>",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/Das-rebel/finwipe.git"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/Das-rebel/finwipe",
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/Das-rebel/finwipe/issues"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=14.0.0"
|
|
37
|
+
},
|
|
38
|
+
"os": ["darwin", "linux", "win32"],
|
|
39
|
+
"files": [
|
|
40
|
+
"finwipe",
|
|
41
|
+
"README.md",
|
|
42
|
+
"LICENSE"
|
|
43
|
+
]
|
|
44
|
+
}
|