abinazebinoy commited on
Commit
2a5cb4a
Β·
1 Parent(s): 2267fcc

Remove unwanted files

Browse files
.github/workflows/daily_scrape.yml DELETED
@@ -1,24 +0,0 @@
1
- name: daily-scrape
2
- on:
3
- schedule:
4
- - cron: "0 21 * * *"
5
- workflow_dispatch:
6
- jobs:
7
- scrape:
8
- runs-on: ubuntu-latest
9
- timeout-minutes: 45
10
- steps:
11
- - uses: actions/checkout@v4
12
- - uses: actions/setup-python@v5
13
- with:
14
- python-version: "3.11"
15
- cache: pip
16
- - run: pip install -r requirements.txt
17
- - name: run pipeline
18
- env:
19
- DATAGOV_API_KEY: ${{ secrets.DATAGOV_API_KEY }}
20
- NEO4J_URI: ${{ secrets.NEO4J_URI }}
21
- NEO4J_USER: ${{ secrets.NEO4J_USER }}
22
- NEO4J_PASSWORD: ${{ secrets.NEO4J_PASSWORD }}
23
- OPENSANCTIONS_API_KEY: ${{ secrets.OPENSANCTIONS_API_KEY }}
24
- run: python -m processing.pipeline --scrapers cag,gem,pib,myneta,mca,loksabha,ed,wikidata
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.github/workflows/jekyll-gh-pages.yml DELETED
@@ -1,51 +0,0 @@
1
- # Sample workflow for building and deploying a Jekyll site to GitHub Pages
2
- name: Deploy Jekyll with GitHub Pages dependencies preinstalled
3
-
4
- on:
5
- # Runs on pushes targeting the default branch
6
- push:
7
- branches: ["main"]
8
-
9
- # Allows you to run this workflow manually from the Actions tab
10
- workflow_dispatch:
11
-
12
- # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13
- permissions:
14
- contents: read
15
- pages: write
16
- id-token: write
17
-
18
- # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19
- # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20
- concurrency:
21
- group: "pages"
22
- cancel-in-progress: false
23
-
24
- jobs:
25
- # Build job
26
- build:
27
- runs-on: ubuntu-latest
28
- steps:
29
- - name: Checkout
30
- uses: actions/checkout@v4
31
- - name: Setup Pages
32
- uses: actions/configure-pages@v5
33
- - name: Build with Jekyll
34
- uses: actions/jekyll-build-pages@v1
35
- with:
36
- source: ./
37
- destination: ./_site
38
- - name: Upload artifact
39
- uses: actions/upload-pages-artifact@v3
40
-
41
- # Deployment job
42
- deploy:
43
- environment:
44
- name: github-pages
45
- url: ${{ steps.deployment.outputs.page_url }}
46
- runs-on: ubuntu-latest
47
- needs: build
48
- steps:
49
- - name: Deploy to GitHub Pages
50
- id: deployment
51
- uses: actions/deploy-pages@v5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.github/workflows/static.yml DELETED
@@ -1,43 +0,0 @@
1
- # Simple workflow for deploying static content to GitHub Pages
2
- name: Deploy static content to Pages
3
-
4
- on:
5
- # Runs on pushes targeting the default branch
6
- push:
7
- branches: ["main"]
8
-
9
- # Allows you to run this workflow manually from the Actions tab
10
- workflow_dispatch:
11
-
12
- # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13
- permissions:
14
- contents: read
15
- pages: write
16
- id-token: write
17
-
18
- # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19
- # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20
- concurrency:
21
- group: "pages"
22
- cancel-in-progress: false
23
-
24
- jobs:
25
- # Single deploy job since we're just deploying
26
- deploy:
27
- environment:
28
- name: github-pages
29
- url: ${{ steps.deployment.outputs.page_url }}
30
- runs-on: ubuntu-latest
31
- steps:
32
- - name: Checkout
33
- uses: actions/checkout@v4
34
- - name: Setup Pages
35
- uses: actions/configure-pages@v5
36
- - name: Upload artifact
37
- uses: actions/upload-pages-artifact@v3
38
- with:
39
- # Upload entire repository
40
- path: '.'
41
- - name: Deploy to GitHub Pages
42
- id: deployment
43
- uses: actions/deploy-pages@v5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.github/workflows/test.yml DELETED
@@ -1,27 +0,0 @@
1
- name: ci
2
- on:
3
- push:
4
- branches: ["**"]
5
- pull_request:
6
- branches: [main]
7
- jobs:
8
- test:
9
- runs-on: ubuntu-latest
10
- timeout-minutes: 10
11
- steps:
12
- - uses: actions/checkout@v4
13
- - uses: actions/setup-python@v5
14
- with:
15
- python-version: "3.11"
16
- cache: pip
17
- - name: install core deps
18
- run: pip install loguru python-dotenv requests fastapi pydantic neo4j networkx jinja2 pytest
19
- - name: syntax check
20
- run: |
21
- FAIL=0
22
- for f in $(find . -name "*.py" -not -path "./venv/*" -not -path "./.git/*"); do
23
- python -m py_compile "$f" || { echo "FAIL $f"; FAIL=1; }
24
- done
25
- exit $FAIL
26
- - name: run tests
27
- run: pytest tests/ -v --tb=short || true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/processed/dossier_Sample_Politician_20260401_131217.html ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>BharatGraph Investigation Dossier</title>
6
+ <style>
7
+ * { margin: 0; padding: 0; box-sizing: border-box; }
8
+ body { font-family: "DejaVu Sans", Arial, sans-serif; font-size: 11px; color: #1a1a2e; background: white; }
9
+ .cover { page-break-after: always; min-height: 297mm; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 40mm 30mm; border-bottom: 6px solid #FF9933; }
10
+ .cover-logo { font-size: 28px; font-weight: bold; color: #138808; letter-spacing: 3px; margin-bottom: 8px; }
11
+ .cover-tagline { font-size: 11px; color: #666; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 40px; }
12
+ .cover-title { font-size: 22px; font-weight: bold; color: #0A0F2E; text-align: center; margin-bottom: 8px; }
13
+ .cover-entity { font-size: 16px; color: #FF9933; text-align: center; margin-bottom: 40px; }
14
+ .cover-meta { font-size: 9px; color: #888; text-align: center; line-height: 1.8; margin-bottom: 30px; }
15
+ .cover-hash { font-family: "Courier New", monospace; font-size: 9px; background: #f5f5f5; padding: 8px 16px; border: 1px solid #ddd; border-radius: 3px; word-break: break-all; text-align: center; max-width: 400px; }
16
+ .cover-hash-label { font-size: 8px; color: #999; text-align: center; margin-top: 4px; }
17
+ .disclaimer-box { margin-top: 40px; padding: 12px 20px; border: 1px solid #FF9933; border-radius: 3px; font-size: 9px; color: #666; text-align: center; max-width: 450px; }
18
+ .section { page-break-inside: avoid; padding: 16px 24px; margin-bottom: 16px; }
19
+ .section-header { font-size: 13px; font-weight: bold; color: white; background: #0A0F2E; padding: 8px 16px; margin-bottom: 12px; border-left: 4px solid #FF9933; }
20
+ .section-content { line-height: 1.7; }
21
+ .subsection-title { font-size: 10px; font-weight: bold; color: #138808; margin: 10px 0 4px 0; text-transform: uppercase; letter-spacing: 1px; }
22
+ table { width: 100%; border-collapse: collapse; margin: 8px 0; font-size: 9px; }
23
+ th { background: #0A0F2E; color: white; padding: 6px 8px; text-align: left; font-weight: normal; }
24
+ td { padding: 5px 8px; border-bottom: 1px solid #eee; }
25
+ tr:nth-child(even) td { background: #f9f9f9; }
26
+ .risk-badge { display: inline-block; padding: 3px 10px; border-radius: 3px; font-size: 10px; font-weight: bold; }
27
+ .risk-LOW { background: #d4edda; color: #155724; }
28
+ .risk-MODERATE { background: #fff3cd; color: #856404; }
29
+ .risk-HIGH { background: #f8d7da; color: #721c24; }
30
+ .risk-VERY_HIGH { background: #f5c6cb; color: #491217; }
31
+ .finding-item { padding: 8px 12px; margin: 6px 0; border-left: 3px solid #FF9933; background: #fffaf5; }
32
+ .finding-HIGH { border-left-color: #dc3545; background: #fff5f5; }
33
+ .finding-MODERATE { border-left-color: #ffc107; background: #fffdf5; }
34
+ .finding-LOW { border-left-color: #28a745; background: #f5fff8; }
35
+ .evidence-item { padding: 6px 10px; margin: 4px 0; background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 2px; font-size: 9px; }
36
+ .doubt-item { padding: 8px 12px; margin: 6px 0; border-left: 3px solid #6c757d; background: #f8f9fa; font-style: italic; }
37
+ .positive-item { padding: 6px 10px; margin: 4px 0; border-left: 3px solid #28a745; background: #f5fff8; }
38
+ .timeline-item { display: flex; padding: 6px 0; border-bottom: 1px solid #eee; }
39
+ .timeline-date { width: 100px; font-size: 9px; color: #666; flex-shrink: 0; }
40
+ .timeline-event { font-size: 10px; }
41
+ .page-footer { position: fixed; bottom: 0; left: 0; right: 0; font-size: 8px; color: #aaa; text-align: center; padding: 4px; border-top: 1px solid #eee; }
42
+ .score-bar-container { margin: 8px 0; }
43
+ .score-bar { height: 12px; background: #eee; border-radius: 6px; overflow: hidden; }
44
+ .score-fill { height: 100%; border-radius: 6px; }
45
+ .score-fill-LOW { background: #28a745; }
46
+ .score-fill-MODERATE { background: #ffc107; }
47
+ .score-fill-HIGH { background: #fd7e14; }
48
+ .score-fill-VERY_HIGH { background: #dc3545; }
49
+ .metadata-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 8px 0; }
50
+ .metadata-item { padding: 6px 10px; background: #f8f9fa; border-radius: 2px; }
51
+ .metadata-label { font-size: 8px; color: #666; text-transform: uppercase; }
52
+ .metadata-value { font-size: 10px; font-weight: bold; color: #1a1a2e; }
53
+ h1 { font-size: 16px; margin-bottom: 12px; color: #0A0F2E; }
54
+ h2 { font-size: 12px; margin: 10px 0 6px 0; color: #138808; }
55
+ p { margin-bottom: 6px; }
56
+ .source-chip { display: inline-block; padding: 2px 6px; background: #e9ecef; border-radius: 2px; font-size: 8px; color: #495057; margin: 2px; }
57
+ </style>
58
+ </head>
59
+ <body>
60
+
61
+ <div class="cover">
62
+ <div class="cover-logo">BHARATGRAPH</div>
63
+ <div class="cover-tagline">Public Transparency Intelligence Platform</div>
64
+ <div class="cover-title">Investigation Dossier</div>
65
+ <div class="cover-entity">Sample Politician</div>
66
+ <div class="cover-meta">
67
+ Entity Type: Unknown<br>
68
+ Entity ID: sample_entity_001<br>
69
+ Generated: 2026-04-01 13:12:17<br>
70
+ Investigators: 12<br>
71
+ Evidence Items: 2
72
+ </div>
73
+ <div class="cover-hash">2ecfac724433f5908387a69687cae54dc63294f14271abf287f21680d217d22a</div>
74
+ <div class="cover-hash-label">SHA-256 Report Integrity Hash β€” verify at bharatgraph.in/verify/2ecfac724433f590</div>
75
+ <div class="disclaimer-box">
76
+ This dossier is generated from official public records only. Every claim is linked to a primary source document.
77
+ This is an analytical report. It does not constitute a legal finding, accusation, or determination of guilt.
78
+ The subject of this report has the right to submit corrections through the BharatGraph platform.
79
+ </div>
80
+ </div>
81
+
82
+ <div class="section">
83
+ <div class="section-header">Section 1 β€” Identity and Overview</div>
84
+ <div class="section-content">
85
+ <div class="metadata-grid">
86
+ <div class="metadata-item">
87
+ <div class="metadata-label">Full Name</div>
88
+ <div class="metadata-value">Sample Politician</div>
89
+ </div>
90
+ <div class="metadata-item">
91
+ <div class="metadata-label">Entity Type</div>
92
+ <div class="metadata-value">Unknown</div>
93
+ </div>
94
+
95
+
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <div class="section">
101
+ <div class="section-header">Section 2 β€” Structural Risk Indicator</div>
102
+ <div class="section-content">
103
+ <div class="metadata-grid">
104
+ <div class="metadata-item">
105
+ <div class="metadata-label">Risk Score</div>
106
+ <div class="metadata-value">0 / 100</div>
107
+ </div>
108
+ <div class="metadata-item">
109
+ <div class="metadata-label">Risk Level</div>
110
+ <div class="metadata-value">
111
+ <span class="risk-badge risk-UNKNOWN">UNKNOWN</span>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ <div class="score-bar-container">
116
+ <div class="score-bar">
117
+ <div class="score-fill score-fill-UNKNOWN" style="width: 0%"></div>
118
+ </div>
119
+ </div>
120
+ <p style="margin-top:8px; font-size:10px; color:#666;">
121
+ This score is derived from structural patterns in official data.
122
+ It is an analytical indicator, not a legal determination.
123
+ </p>
124
+ </div>
125
+ </div>
126
+
127
+ <div class="section">
128
+ <div class="section-header">Section 3 β€” Analytical Findings</div>
129
+ <div class="section-content">
130
+
131
+ <div class="subsection-title">Agreed Findings (confirmed by multiple investigators)</div>
132
+
133
+ <div class="finding-item finding-HIGH">
134
+ <strong>[HIGH]</strong> Entity linked to 3 contracts totalling Rs 150 Cr.
135
+
136
+ <div style="margin-top:4px;">
137
+
138
+ <span class="source-chip">Contract order from GeM</span>
139
+
140
+ </div>
141
+
142
+ </div>
143
+
144
+
145
+ </div>
146
+ </div>
147
+
148
+ <div class="section">
149
+ <div class="section-header">Section 4 β€” Doubts and Unexplained Patterns</div>
150
+ <div class="section-content">
151
+
152
+
153
+ <div class="doubt-item">
154
+ <strong>Hypothesis:</strong> Company directorships exist but no matching contracts found.<br>
155
+ <strong>Data Gap:</strong> Possible CPPP data coverage gap<br>
156
+ <strong>Recommended Action:</strong> Cross-reference with CPPP tender awards
157
+ </div>
158
+
159
+
160
+ </div>
161
+ </div>
162
+
163
+ <div class="section">
164
+ <div class="section-header">Section 5 β€” Positive Contributions</div>
165
+ <div class="section-content">
166
+
167
+
168
+ <div class="positive-item">Party affiliation recorded providing public accountability.</div>
169
+
170
+ <div class="positive-item">No matches found in ICIJ Offshore Leaks database.</div>
171
+
172
+
173
+ </div>
174
+ </div>
175
+
176
+ <div class="section">
177
+ <div class="section-header">Section 6 β€” Timeline of Events</div>
178
+ <div class="section-content">
179
+
180
+
181
+ <div class="timeline-item">
182
+ <div class="timeline-date">2022-04-15</div>
183
+ <div class="timeline-event">
184
+ <strong>Contract Awarded</strong> β€” Rs 50 Cr from Ministry of Rural Development
185
+ <span class="source-chip">GeM</span>
186
+ </div>
187
+ </div>
188
+
189
+
190
+ </div>
191
+ </div>
192
+
193
+ <div class="section">
194
+ <div class="section-header">Section 7 β€” Evidence Locker</div>
195
+ <div class="section-content">
196
+ <p style="margin-bottom:8px; font-size:9px; color:#666;">
197
+ All 2 primary source documents referenced in this report.
198
+ </p>
199
+
200
+ <div class="evidence-item">
201
+ <strong>Government e-Marketplace</strong> β€” Contract Order Records
202
+ | <a href="https://gem.gov.in">https://gem.gov.in</a>
203
+ | Date: 2022-04-15
204
+ </div>
205
+
206
+ <div class="evidence-item">
207
+ <strong>Election Commission of India</strong> β€” Candidate Affidavit
208
+ | <a href="https://myneta.info">https://myneta.info</a>
209
+ | Date: 2024-04-01
210
+ </div>
211
+
212
+ </div>
213
+ </div>
214
+
215
+ <div class="section">
216
+ <div class="section-header">Section 8 β€” Methodology and Data Sources</div>
217
+ <div class="section-content">
218
+ <p>This dossier was generated by the BharatGraph Multi-Investigator AI Engine.
219
+ 12 specialist investigators analysed this entity in parallel,
220
+ each from an independent analytical angle. Every finding is backed by a primary
221
+ source document. No claims are made without evidence.</p>
222
+ <p style="margin-top:8px;">Data sources used in this analysis include official Indian government
223
+ records (ECI affidavits, MCA filings, GeM contracts, CAG audit reports, PIB press
224
+ releases, parliamentary records) and international datasets (OpenSanctions,
225
+ ICIJ Offshore Leaks, Wikidata).</p>
226
+ <p style="margin-top:8px; font-weight:bold; color:#dc3545;">
227
+ LEGAL DISCLAIMER: This report is generated from publicly available official records.
228
+ It does not constitute a legal finding, accusation, or determination of guilt.
229
+ The subject of this report has the right to submit corrections at bharatgraph.in.
230
+ </p>
231
+ </div>
232
+ </div>
233
+
234
+ <div class="page-footer">
235
+ BharatGraph Public Transparency Platform | Report Hash: 2ecfac724433f5908387a69687cae54d... | Generated: 2026-04-01 13:12:17
236
+ </div>
237
+
238
+ </body>
239
+ </html>