JaydeepR commited on
Commit
d5d2cb4
·
1 Parent(s): bdb7765

Add presentation_creation.md — full brief for 6 PPT/PDF variants

Browse files
Files changed (1) hide show
  1. presentation_creation.md +689 -0
presentation_creation.md ADDED
@@ -0,0 +1,689 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # TenderIQ — Presentation Creation Brief
2
+
3
+ > **Purpose of this file:** Give a fresh Claude context everything it needs to generate
4
+ > 5–6 distinct, high-quality presentations (PPT and/or PDF) for the CRPF Hackathon
5
+ > submission. The creator should produce all variants in one session so the user can
6
+ > pick the best one.
7
+
8
+ ---
9
+
10
+ ## 0. How to use this file
11
+
12
+ 1. Read sections 1–5 carefully — they contain all project context, slide content,
13
+ and data.
14
+ 2. Read section 6 — it defines exactly 6 visual styles to produce.
15
+ 3. Read section 7 — it gives technical guidance for python-pptx and reportlab.
16
+ 4. Produce all 6 variants, saving them to `deck/` as:
17
+ - `deck/TenderIQ_v1_dark_professional.pptx`
18
+ - `deck/TenderIQ_v2_clean_minimal.pptx`
19
+ - `deck/TenderIQ_v3_government_official.pptx`
20
+ - `deck/TenderIQ_v4_modern_gradient.pdf`
21
+ - `deck/TenderIQ_v5_data_forward.pptx`
22
+ - `deck/TenderIQ_v6_infographic.pdf`
23
+ 5. Each variant uses the **same slide content** (section 4) but different visual
24
+ treatment (section 6). Do not cut content between variants.
25
+
26
+ **DO NOT** reuse the existing `deck/TenderIQ_Pitch.pdf` — it was generated by a
27
+ previous low-quality script and should be ignored entirely.
28
+
29
+ ---
30
+
31
+ ## 1. Project Summary
32
+
33
+ **Name:** TenderIQ
34
+ **Tagline:** Explainable AI for Government Tender Evaluation
35
+ **Event:** CRPF Hackathon — Theme 3: AI-Based Tender Evaluation and Eligibility
36
+ Analysis for Government Procurement
37
+ **Organisation:** Central Reserve Police Force, Ministry of Home Affairs,
38
+ Government of India
39
+
40
+ **One paragraph description:**
41
+ TenderIQ automates the eligibility evaluation of bidders against government tender
42
+ criteria. A procurement officer uploads a tender PDF; the system extracts each
43
+ eligibility criterion using an LLM, processes bidder documents through a three-tier
44
+ OCR pipeline (handling everything from typed PDFs to blurry scanned certificates),
45
+ evaluates each bidder against each criterion with combined confidence scoring, and
46
+ surfaces ambiguous cases for human review — all with a complete, exportable audit
47
+ trail. The app is built on Streamlit and is deployable to a public URL in minutes.
48
+
49
+ ---
50
+
51
+ ## 2. The Problem (use these facts on the problem slide)
52
+
53
+ - A procurement committee manually reading tender documents and bidder submissions
54
+ can spend **3–5 days per tender**
55
+ - Two evaluators reviewing the same bid **regularly reach different conclusions**
56
+ - Documents arrive in **mixed formats**: typed PDFs, scanned certificates,
57
+ photographs of documents taken on phones
58
+ - There is **no consistent audit trail** — decisions cannot be traced to specific
59
+ evidence
60
+ - Government procurement is worth **₹50 lakh crore+ annually** in India
61
+ - Manual evaluation is a bottleneck that **delays project execution**
62
+
63
+ ---
64
+
65
+ ## 3. Key Differentiators (highlight these)
66
+
67
+ 1. **Three-tier OCR robustness** — most systems assume digital text; TenderIQ
68
+ handles scanned and photographed documents via a progressive pipeline:
69
+ PyMuPDF (typed PDF, instant) → Tesseract OCR (scans) → DeepSeek Vision LLM
70
+ (low-confidence scans, ~95% accuracy). Every page records which tier read it.
71
+
72
+ 2. **Never silent disqualification** — the safety rule: if combined confidence is
73
+ between 0.55 and 0.80 and the verdict is `not_eligible`, it is automatically
74
+ downgraded to `needs_review`. A bidder is never automatically disqualified at
75
+ medium confidence.
76
+
77
+ 3. **Criterion-level explainability** — every verdict is traceable to a specific
78
+ document, page number, OCR tier, extracted value, and plain-English reason.
79
+ Not just "pass/fail" — the officer can see exactly why.
80
+
81
+ 4. **Complete audit trail** — every action (extraction, OCR invocation, evaluation,
82
+ human review) is logged with timestamp, model version, actor, and payload to
83
+ SQLite. Exportable as CSV.
84
+
85
+ 5. **Works without internet** — pre-computed fallback JSON is shipped with the
86
+ repo. If the API goes down during a demo, the app continues seamlessly. Sidebar
87
+ turns amber to indicate fallback mode.
88
+
89
+ ---
90
+
91
+ ## 4. Slide Content (use exactly this for all 6 variants)
92
+
93
+ ### SLIDE 1 — Title Slide
94
+ - **Main title:** TenderIQ
95
+ - **Subtitle:** Explainable AI for Government Tender Evaluation
96
+ - **Event line:** CRPF Hackathon · Theme 3
97
+ - **Tagline (small):** From days to minutes. Every decision traceable.
98
+ - **Visual suggestion:** The ⚖️ scales emoji large, or an abstract representation
99
+ of documents flowing through a pipeline
100
+
101
+ ---
102
+
103
+ ### SLIDE 2 — The Problem
104
+ - **Title:** The Problem with Manual Tender Evaluation
105
+ - **Three pain points (use as large visual callouts or icon+text cards):**
106
+ 1. **3–5 Days** per tender evaluation by committee
107
+ 2. **Inconsistent** — two evaluators, two different conclusions
108
+ 3. **No audit trail** — decisions untraceably made
109
+ - **Supporting points (smaller text or bullets):**
110
+ - Mixed document formats: typed PDFs, scans, phone photographs
111
+ - Government procurement worth ₹50 lakh crore+ annually in India
112
+ - Project delays traced directly to procurement bottlenecks
113
+
114
+ ---
115
+
116
+ ### SLIDE 3 — Our Solution
117
+ - **Title:** TenderIQ — Four Stages, End to End
118
+ - **Four stage cards (equal weight, horizontal or 2×2 layout):**
119
+
120
+ **Stage 1 — Extract**
121
+ DeepSeek LLM reads the tender PDF and returns each criterion as structured JSON:
122
+ category, mandatory flag, threshold rule, source clause, query hints.
123
+
124
+ **Stage 2 — OCR & Index**
125
+ Three-tier pipeline handles any document format.
126
+ All text chunked and indexed for semantic retrieval.
127
+
128
+ **Stage 3 — Evaluate**
129
+ Vector search finds relevant evidence. LLM produces a verdict with confidence.
130
+ Safety rule prevents silent disqualification.
131
+
132
+ **Stage 4 — Review & Audit**
133
+ Borderline cases go to a human review queue. Every action logged.
134
+ Full audit trail exportable as CSV.
135
+
136
+ - **Bottom line (callout box):**
137
+ "Minutes, not days. Every verdict traceable to a document and page."
138
+
139
+ ---
140
+
141
+ ### SLIDE 4 — Architecture
142
+ - **Title:** System Architecture
143
+ - **Diagram description (reproduce this as a visual flow diagram):**
144
+
145
+ ```
146
+ Tender PDF Bidder Documents
147
+ │ (PDFs · scans · photos)
148
+ ▼ │
149
+ DeepSeek LLM 3-Tier OCR Pipeline
150
+ (Extract Criteria) ① PyMuPDF (typed PDF)
151
+ │ ② Tesseract (scans)
152
+ ▼ ③ Vision LLM (low conf.)
153
+ Criteria JSON │
154
+ (C1–C5 structured) Vector Index (in-memory)
155
+ │ all-MiniLM-L6-v2 embeddings
156
+ └──────────────────────────────────┘
157
+
158
+ DeepSeek LLM
159
+ (Evaluate each criterion)
160
+ combined confidence score
161
+
162
+ ┌─────────────┴──────────────┐
163
+ eligible / needs_review
164
+ not_eligible Human Review Queue
165
+ │ │
166
+ └───────── SQLite Audit Log ────────┘
167
+ ```
168
+
169
+ - **Key technical facts (sidebar or footnotes on slide):**
170
+ - Single-process Streamlit app — no separate backend
171
+ - Deployable to Streamlit Cloud or HuggingFace Spaces
172
+ - All storage is local: SQLite + in-memory vector index
173
+ - Only external dependency: DeepSeek API
174
+
175
+ ---
176
+
177
+ ### SLIDE 5 — The OCR Demo (the centrepiece)
178
+ - **Title:** Three-Tier OCR — Handling Any Document Format
179
+ - **Three tier cards with visual progression:**
180
+
181
+ **Tier 1 — PyMuPDF**
182
+ - Trigger: Document is a typed/digital PDF
183
+ - Cost: Free, instant
184
+ - Confidence: 1.0 (lossless text extraction)
185
+ - Source label in UI: 📄 Typed PDF
186
+
187
+ **Tier 2 — Tesseract**
188
+ - Trigger: Scanned PDF or image file
189
+ - Cost: Free, local, fast
190
+ - Confidence: Mean of per-word OCR scores
191
+ - Source label in UI: 🔍 Tesseract
192
+
193
+ **Tier 3 — DeepSeek Vision LLM**
194
+ - Trigger: Tesseract confidence < 65%
195
+ - Cost: One API call
196
+ - Confidence: 0.95
197
+ - Source label in UI: 👁 Vision LLM
198
+ - Action: `vision_ocr_invoked` logged to audit
199
+
200
+ - **Demo scenario callout (use a highlighted box):**
201
+ > **Bidder C submits a blurry, rotated CA certificate scan.**
202
+ > Tesseract reads it at ~55% confidence.
203
+ > Vision LLM transcribes the turnover figure correctly.
204
+ > Combined confidence = 0.58 → routed to human review.
205
+ > This is intentional — borderline evidence requires a human.
206
+
207
+ ---
208
+
209
+ ### SLIDE 6 — Explainability & Compliance
210
+ - **Title:** Every Decision is Explainable and Auditable
211
+ - **Two columns:**
212
+
213
+ **Left — Criterion-Level Verdicts**
214
+ Each (bidder × criterion) pair shows:
215
+ - Which criterion was checked
216
+ - Which document and page provided the evidence
217
+ - What value was extracted (e.g. "INR 6.2 Cr")
218
+ - Which OCR tier read the document
219
+ - Combined confidence score (0–100%)
220
+ - Plain-English reason
221
+
222
+ **Right — Audit Trail**
223
+ Every action logged with:
224
+ - UTC timestamp
225
+ - Action type (criteria_extracted / bidder_processed / criterion_evaluated /
226
+ human_review_action / vision_ocr_invoked / precomputed_fallback_used)
227
+ - Model version
228
+ - Actor (system / officer)
229
+ - Full payload JSON
230
+ - Exportable as CSV
231
+
232
+ - **Safety rule callout (prominent, in a coloured box):**
233
+ > **The Safety Rule:**
234
+ > If combined confidence is 0.55–0.80 AND verdict is `not_eligible`,
235
+ > the verdict is automatically downgraded to `needs_review`.
236
+ > A bidder is **never silently disqualified** at medium confidence.
237
+
238
+ ---
239
+
240
+ ### SLIDE 7 — Demo Results
241
+ - **Title:** Demo: Three Bidders, Three Outcomes
242
+ - **Three bidder cards side by side:**
243
+
244
+ **Bidder A — Apex Constructions Pvt. Ltd.**
245
+ Result: ✅ ELIGIBLE
246
+ - C1 Turnover: INR 6.37 Cr avg (threshold: 5 Cr) — PASS
247
+ - C2 Projects: 5 completed including CRPF barracks �� PASS
248
+ - C3 GST: GSTIN 27AABCA1234F1Z5, Active — PASS
249
+ - C4 ISO 9001:2015: Valid June 2027 — PASS
250
+ - All typed PDFs, confidence ≥ 93% on all criteria
251
+
252
+ **Bidder B — BuildRight Enterprises**
253
+ Result: ❌ NOT ELIGIBLE
254
+ - C1 Turnover: INR 1.5 Cr avg (threshold: 5 Cr) — FAIL
255
+ "Average annual turnover of INR 1.5 Cr is below the required
256
+ minimum of INR 5 Cr."
257
+ - C2–C4: All pass
258
+ - Automatically disqualified with high confidence (95%)
259
+
260
+ **Bidder C — Shree Constructions & Services**
261
+ Result: ⚠️ NEEDS REVIEW
262
+ - C1 Turnover: Submitted as blurry scan
263
+ Tesseract ~55% → Vision LLM transcribes INR 5.4 Cr
264
+ Combined confidence 0.58 → needs review (safety rule)
265
+ - C2: Exactly 3 projects (borderline)
266
+ - C3–C4: Pass
267
+
268
+ - **Bottom metric strip:**
269
+ | Metric | Value |
270
+ |--------|-------|
271
+ | Criteria extracted | 5 |
272
+ | Bidder documents processed | 15 |
273
+ | LLM evaluation calls | 15 |
274
+ | Vision OCR invocations | 1 |
275
+ | Human review items | 1 |
276
+ | Total audit entries | 20+ |
277
+
278
+ ---
279
+
280
+ ### SLIDE 8 — Tech Stack & Future Work
281
+ - **Title:** Stack, Impact & What's Next
282
+ - **Left side — Tech Stack (as a clean table):**
283
+
284
+ | Component | Technology |
285
+ |-----------|------------|
286
+ | UI & orchestration | Streamlit 1.39 |
287
+ | LLM | DeepSeek API (OpenAI-compatible) |
288
+ | OCR Tier 1 | PyMuPDF 1.24 |
289
+ | OCR Tier 2 | Tesseract |
290
+ | OCR Tier 3 | DeepSeek Vision LLM |
291
+ | Semantic retrieval | sentence-transformers all-MiniLM-L6-v2 |
292
+ | Data validation | Pydantic v2 |
293
+ | Audit log | SQLite |
294
+ | Deployment | Streamlit Cloud / HuggingFace Spaces |
295
+
296
+ - **Right side — Future Work (as bullets):**
297
+ - Multi-tender workspace — same bidder pool, multiple tenders
298
+ - GeM portal API integration — live tender ingestion
299
+ - Automated bidder ranking with weighted scoring
300
+ - LayoutLM for complex financial tables in scanned statements
301
+ - Multi-evaluator workflow with role-based approval
302
+ - Review queue email/SMS notifications
303
+ - Audit PDF export for procurement oversight submissions
304
+
305
+ - **Bottom — Impact callout:**
306
+ > **3–5 days → minutes.**
307
+ > Every verdict traceable to a document, page, and model version.
308
+ > Built in one hackathon session. Deployable today.
309
+
310
+ ---
311
+
312
+ ## 5. Narrative Arc (how the slides tell a story)
313
+
314
+ The deck should flow as:
315
+ 1. **Hook** (Slide 1) — big, confident title
316
+ 2. **Pain** (Slide 2) — make the problem visceral with the 3 numbers
317
+ 3. **Solution** (Slide 3) — 4 clean stages, not overwhelming
318
+ 4. **Credibility** (Slide 4) — architecture shows it's real engineering
319
+ 5. **Differentiator** (Slide 5) — the OCR story is unique and concrete
320
+ 6. **Trust** (Slide 6) — explainability + audit builds confidence with judges
321
+ 7. **Proof** (Slide 7) — real outcomes, real numbers, real bidder scenarios
322
+ 8. **Vision** (Slide 8) — grounded stack + forward-looking future work
323
+
324
+ Every slide should have **one dominant visual** and **limited text**. Judges skim.
325
+ The most important information should be readable in 3 seconds.
326
+
327
+ ---
328
+
329
+ ## 6. The Six Visual Styles
330
+
331
+ Produce one presentation per style. All use the same slide content from section 4.
332
+
333
+ ---
334
+
335
+ ### Style 1 — Dark Professional (PPTX)
336
+ **File:** `deck/TenderIQ_v1_dark_professional.pptx`
337
+
338
+ **Palette:**
339
+ - Slide background: `#0D1B2A` (deep navy)
340
+ - Primary text: `#F1F5F9` (near white)
341
+ - Secondary text: `#94A3B8` (muted blue-grey)
342
+ - Accent / headings: `#F0A500` (gold)
343
+ - Eligible green: `#22C55E`
344
+ - Not eligible red: `#EF4444`
345
+ - Needs review amber: `#F59E0B`
346
+ - Card backgrounds: `#1E3A5F` (lighter navy)
347
+ - Borders: `#2D4A6B`
348
+
349
+ **Typography:**
350
+ - Headings: Calibri Bold or Arial Bold, 28–32pt, gold
351
+ - Body: Calibri or Arial, 16–18pt, near-white
352
+ - Captions/labels: 12–13pt, muted blue-grey
353
+
354
+ **Style rules:**
355
+ - Dark background on every slide
356
+ - Title slide: large gold ⚖️ emoji, gold title text on navy
357
+ - Section headings have a thin gold left border or underline
358
+ - Cards/boxes: slightly lighter navy background (#1E3A5F) with gold border
359
+ - Verdict chips: coloured filled rectangles (green/red/amber) with white text
360
+ - Progress/confidence: horizontal bar in gold on dark track
361
+ - The OCR tier cards (Slide 5): three columns, each with a different accent colour
362
+ (blue for Tier 1, purple for Tier 2, orange for Tier 3)
363
+ - Architecture diagram (Slide 4): use white-on-dark text boxes connected with
364
+ gold arrows
365
+
366
+ ---
367
+
368
+ ### Style 2 — Clean Minimal (PPTX)
369
+ **File:** `deck/TenderIQ_v2_clean_minimal.pptx`
370
+
371
+ **Palette:**
372
+ - Slide background: `#FFFFFF`
373
+ - Primary text: `#111827`
374
+ - Secondary text: `#6B7280`
375
+ - Accent: `#2563EB` (blue)
376
+ - Light accent background: `#EFF6FF`
377
+ - Eligible: `#059669`
378
+ - Not eligible: `#DC2626`
379
+ - Needs review: `#D97706`
380
+ - Dividers/borders: `#E5E7EB`
381
+
382
+ **Typography:**
383
+ - Headings: Inter or Calibri Light Bold, 28–32pt, #111827
384
+ - Body: Inter or Calibri, 15–16pt, #374151
385
+ - Captions: 11–12pt, #9CA3AF
386
+
387
+ **Style rules:**
388
+ - White background throughout
389
+ - Large amounts of whitespace — never fill the slide
390
+ - Title slide: small ⚖️ followed by large "TenderIQ" in #111827, subtitle in grey
391
+ - Section headings: simple left-aligned text with a 3px blue left border
392
+ - Cards: white with a 1px #E5E7EB border and very subtle shadow (simulate with
393
+ slightly off-white fill)
394
+ - No gradients, no heavy fills — colour used sparingly as accent only
395
+ - Verdict chips: light fill (green/red/amber at 15% opacity) with bold coloured text
396
+ - Numbers/stats (Slide 2): very large (80–96pt), blue accent colour, minimal
397
+ surrounding text
398
+ - Architecture diagram (Slide 4): use grey boxes with blue connector arrows,
399
+ clean and uncluttered
400
+
401
+ ---
402
+
403
+ ### Style 3 — Government Official (PPTX)
404
+ **File:** `deck/TenderIQ_v3_government_official.pptx`
405
+
406
+ **Palette:**
407
+ - Primary: `#003580` (deep government blue, similar to NIC / India.gov.in)
408
+ - Secondary: `#FFFFFF`
409
+ - Accent: `#FF9933` (saffron, from the Indian tricolour)
410
+ - Third accent: `#138808` (India green)
411
+ - Background: `#F5F5F0` (off-white, like a government document)
412
+ - Text: `#1A1A1A`
413
+ - Borders: `#003580`
414
+
415
+ **Typography:**
416
+ - Headings: Times New Roman Bold or Cambria Bold, 26–30pt, #003580
417
+ - Body: Arial or Calibri, 14–15pt, #1A1A1A
418
+ - Official labels: small caps, 11pt, #003580
419
+
420
+ **Style rules:**
421
+ - Header bar on every slide: deep blue (#003580) band at top with white text for
422
+ slide title; thin saffron line below the header band
423
+ - Footer on every slide: "TenderIQ · CRPF Hackathon · Theme 3" in small text
424
+ on the blue header colour
425
+ - Title slide: formal layout — emblem/logo area top left, large title centred,
426
+ "Ministry of Home Affairs" sub-line
427
+ - Slide content area: off-white background, clean margins
428
+ - Tables: blue header row (#003580, white text), alternating white/#F0F4FF rows
429
+ - Callout boxes: thin blue border, very light blue fill (#EBF0FF)
430
+ - Verdict indicators: use formal language labels ("ELIGIBLE", "NOT ELIGIBLE",
431
+ "UNDER REVIEW") in coloured text, no emoji
432
+ - This style should feel like an official government presentation, not a startup deck
433
+
434
+ ---
435
+
436
+ ### Style 4 — Modern Gradient (PDF via reportlab)
437
+ **File:** `deck/TenderIQ_v4_modern_gradient.pdf`
438
+
439
+ **Palette:**
440
+ - Gradient 1 (title slide): `#667EEA` → `#764BA2` (purple-blue)
441
+ - Gradient 2 (content slides background strip): `#0EA5E9` → `#2563EB`
442
+ - Card fills: `#FFFFFF` with coloured top accent border
443
+ - Text on gradient: `#FFFFFF`
444
+ - Text on white: `#0F172A`
445
+ - Eligible: `#10B981`
446
+ - Not eligible: `#F43F5E`
447
+ - Needs review: `#FBBF24`
448
+
449
+ **Typography:**
450
+ - Headings on gradient: white, bold, 24–28pt
451
+ - Body on white cards: dark, 12–14pt
452
+ - Stat numbers: 48–56pt, gradient-coloured
453
+
454
+ **Style rules (reportlab specific):**
455
+ - Title slide: full-page gradient background (use `canvas.linearGradient` if
456
+ available, or approximate with filled rectangles stepping from #667EEA to #764BA2)
457
+ - Content slides: white background with a gradient-filled header band (top 20% of
458
+ slide) for the slide title
459
+ - Cards: white rectangles with a 4px top border in a theme colour, subtle grey
460
+ border on other sides
461
+ - Stat numbers on Slide 2: very large, rendered in the gradient colours
462
+ - OCR tiers on Slide 5: three cards with top borders in blue, purple, orange
463
+ - Arrows in architecture diagram: use curved lines in gradient blue
464
+ - Avoid heavy outlines — use fill and spacing instead
465
+ - Page numbers bottom right in muted colour
466
+
467
+ ---
468
+
469
+ ### Style 5 — Data Forward (PPTX)
470
+ **File:** `deck/TenderIQ_v5_data_forward.pptx`
471
+
472
+ **Palette:**
473
+ - Background: `#FAFAFA`
474
+ - Primary: `#1E293B`
475
+ - Accent: `#6366F1` (indigo)
476
+ - Chart colours: `#22C55E`, `#EF4444`, `#F59E0B`, `#3B82F6`, `#8B5CF6`
477
+ - Grid lines: `#E2E8F0`
478
+ - Text: `#334155`
479
+
480
+ **Typography:**
481
+ - Data labels: 14–16pt bold, #1E293B
482
+ - Axis labels / captions: 10–11pt, #64748B
483
+ - Slide titles: 24pt bold, indigo
484
+
485
+ **Style rules:**
486
+ - This variant leads with data visualisation on every slide where possible
487
+ - Slide 2 (Problem): use a simple bar chart showing "Days per tender" comparison
488
+ (manual: 3–5 days, TenderIQ: minutes represented as <0.1 days)
489
+ - Slide 3 (Solution): use a horizontal process flow with numbered circles
490
+ - Slide 5 (OCR): use a stacked bar or table showing accuracy by tier
491
+ - Slide 7 (Demo results): use a verdicts breakdown chart — 3 bidders × 5 criteria
492
+ as a colour-coded matrix (green/red/amber cells)
493
+ - Slide 8 (Stack): use a visual table with technology icons (text-based approximation)
494
+ - Charts should be built with python-pptx chart objects (not images) where possible,
495
+ or use matplotlib to embed PNG charts
496
+
497
+ **Key chart specs:**
498
+ - Demo results matrix (Slide 7): 3 rows (bidders) × 5 columns (criteria), each cell
499
+ filled green/red/amber with a 1-letter code (E/N/R)
500
+ - OCR confidence comparison (Slide 5): simple bar chart showing
501
+ Tier 1: 100%, Tier 2: ~55–65%, Tier 3: ~95%
502
+ - Problem scale (Slide 2): two-bar chart, Manual vs TenderIQ, logarithmic scale
503
+ or just text-anchored bars
504
+
505
+ ---
506
+
507
+ ### Style 6 — Infographic (PDF via reportlab)
508
+ **File:** `deck/TenderIQ_v6_infographic.pdf`
509
+
510
+ **Palette:**
511
+ - Background: `#FFFFFF`
512
+ - Section stripe: `#F8FAFC`
513
+ - Primary icon colour: `#2563EB`
514
+ - Icon accents: `#22C55E`, `#EF4444`, `#F59E0B`, `#8B5CF6`
515
+ - Text: `#0F172A`
516
+ - Subtext: `#64748B`
517
+
518
+ **Typography:**
519
+ - Large numbers: 48–60pt, bold, primary colour
520
+ - Section labels: 10pt, all-caps, letter-spaced, muted
521
+ - Body: 12pt, dark
522
+
523
+ **Style rules:**
524
+ - Every slide is built around a large central icon or number
525
+ - Slide 2 (Problem): three large numbers (3–5, ✗, ?) each with a one-line label
526
+ - Slide 3 (Solution): four large icons (📄 → 🔍 → ⚖️ → 📋) with stage labels
527
+ - Slide 4 (Architecture): a vertical flow infographic, not a box diagram —
528
+ icon per stage, connecting lines, short labels
529
+ - Slide 5 (OCR): three large tier icons stacked with an arrow between them,
530
+ confidence % shown as a circular progress indicator (drawn with arc)
531
+ - Slide 7 (Demo): three large outcome icons (✅ ❌ ⚠️) each with 3 bullet points
532
+ - Slide 8 (Future): icon grid of 6 future directions, each with a 1-line label
533
+ - No heavy borders — whitespace is the separator
534
+ - Use reportlab's `canvas.drawString`, arcs for circular indicators, and
535
+ filled rectangles for bars
536
+
537
+ ---
538
+
539
+ ## 7. Technical Implementation Notes
540
+
541
+ ### python-pptx (for Styles 1, 2, 3, 5)
542
+
543
+ ```python
544
+ from pptx import Presentation
545
+ from pptx.util import Inches, Pt, Emu
546
+ from pptx.dml.color import RGBColor
547
+ from pptx.enum.text import PP_ALIGN
548
+ from pptx.util import Inches, Pt
549
+
550
+ # Slide size — widescreen 16:9
551
+ prs = Presentation()
552
+ prs.slide_width = Inches(13.33)
553
+ prs.slide_height = Inches(7.5)
554
+
555
+ # Add a blank slide
556
+ slide_layout = prs.slide_layouts[6] # blank
557
+ slide = prs.slides.add_slide(slide_layout)
558
+
559
+ # Add a filled rectangle
560
+ from pptx.util import Inches
561
+ shape = slide.shapes.add_shape(
562
+ MSO_SHAPE_TYPE.RECTANGLE, # or use 1
563
+ Inches(0), Inches(0), Inches(13.33), Inches(7.5)
564
+ )
565
+ shape.fill.solid()
566
+ shape.fill.fore_color.rgb = RGBColor(0x0D, 0x1B, 0x2A)
567
+ shape.line.fill.background() # no border
568
+
569
+ # Add text box
570
+ from pptx.util import Inches, Pt
571
+ txBox = slide.shapes.add_textbox(Inches(1), Inches(2), Inches(11), Inches(2))
572
+ tf = txBox.text_frame
573
+ tf.word_wrap = True
574
+ p = tf.paragraphs[0]
575
+ p.text = "TenderIQ"
576
+ p.alignment = PP_ALIGN.CENTER
577
+ run = p.runs[0]
578
+ run.font.size = Pt(54)
579
+ run.font.bold = True
580
+ run.font.color.rgb = RGBColor(0xF0, 0xA5, 0x00) # gold
581
+
582
+ # Save
583
+ prs.save("deck/TenderIQ_v1_dark_professional.pptx")
584
+ ```
585
+
586
+ **Key python-pptx patterns to use:**
587
+ - `slide.shapes.add_shape(1, ...)` — adds a rectangle (MSO_SHAPE_TYPE.RECTANGLE = 1)
588
+ - `shape.fill.solid()` + `shape.fill.fore_color.rgb = RGBColor(r, g, b)` — fill colour
589
+ - `shape.line.fill.background()` — remove border
590
+ - `slide.shapes.add_textbox(left, top, width, height)` — text box
591
+ - `tf.paragraphs[0].runs[0].font.color.rgb` — font colour
592
+ - `slide.shapes.add_picture(image_path, left, top, width, height)` — embed image
593
+ - For tables: `slide.shapes.add_table(rows, cols, left, top, width, height)`
594
+ - All measurements: use `Inches()` or `Pt()` or raw `Emu` (1 inch = 914400 Emu)
595
+
596
+ **Avoid:**
597
+ - `pptx.chart` (complex, often renders poorly) — use coloured shapes instead
598
+ - Embedded images from URLs — use only local files or draw shapes
599
+
600
+ ---
601
+
602
+ ### reportlab (for Styles 4 and 6)
603
+
604
+ ```python
605
+ from reportlab.pdfgen.canvas import Canvas
606
+ from reportlab.lib.pagesizes import A4, landscape
607
+ from reportlab.lib import colors
608
+ from reportlab.lib.units import cm, mm
609
+
610
+ W, H = landscape(A4) # 841.89 x 595.28 points (29.7 x 21 cm landscape)
611
+
612
+ c = Canvas("deck/TenderIQ_v4_modern_gradient.pdf", pagesize=landscape(A4))
613
+
614
+ # Filled rectangle
615
+ c.setFillColor(colors.HexColor("#0D1B2A"))
616
+ c.rect(0, 0, W, H, fill=1, stroke=0)
617
+
618
+ # Text
619
+ c.setFillColor(colors.white)
620
+ c.setFont("Helvetica-Bold", 48)
621
+ c.drawCentredString(W/2, H/2, "TenderIQ")
622
+
623
+ # Line
624
+ c.setStrokeColor(colors.HexColor("#F0A500"))
625
+ c.setLineWidth(3)
626
+ c.line(2*cm, H - 3*cm, W - 2*cm, H - 3*cm)
627
+
628
+ # New page
629
+ c.showPage()
630
+
631
+ # Save
632
+ c.save()
633
+ ```
634
+
635
+ **Key reportlab patterns:**
636
+ - `c.rect(x, y, w, h, fill=1, stroke=0)` — filled rectangle, no border
637
+ - `c.roundRect(x, y, w, h, radius, fill=1, stroke=0)` — rounded rectangle
638
+ - `c.drawCentredString(x, y, text)` — centred text at point
639
+ - `c.drawString(x, y, text)` — left-aligned text
640
+ - `c.drawRightString(x, y, text)` — right-aligned text
641
+ - `c.setFont("Helvetica-Bold", size)` — font (built-in: Helvetica, Times-Roman, Courier)
642
+ - `c.arc(x1, y1, x2, y2, startAng, extent)` — arc (for circular indicators)
643
+ - `c.line(x1, y1, x2, y2)` — line
644
+ - `c.showPage()` — new slide/page
645
+ - **Coordinate system:** origin is bottom-left; y increases upward
646
+ - To position from top: use `H - y_from_top`
647
+
648
+ **Text wrapping in reportlab:**
649
+ ```python
650
+ from reportlab.platypus import Paragraph
651
+ from reportlab.lib.styles import ParagraphStyle
652
+
653
+ style = ParagraphStyle('body', fontSize=12, leading=16, textColor=colors.white)
654
+ p = Paragraph("Long text that wraps automatically.", style)
655
+ p.wrapOn(c, width, height)
656
+ p.drawOn(c, x, y)
657
+ ```
658
+
659
+ ---
660
+
661
+ ## 8. Quality Checklist
662
+
663
+ Before saving each variant, verify:
664
+
665
+ - [ ] All 8 slides are present with content from section 4
666
+ - [ ] Title is readable in 2 seconds on slide 1
667
+ - [ ] The three pain point numbers are prominent on slide 2
668
+ - [ ] The safety rule callout is visually distinct on slide 6
669
+ - [ ] The three bidder outcomes are clearly colour-coded on slide 7
670
+ - [ ] No slide has walls of text — maximum ~6 bullet points per slide
671
+ - [ ] Font sizes: headings 24–32pt, body 14–16pt minimum (readable when projected)
672
+ - [ ] Consistent margin — at least 1 inch (reportlab: 2.5cm) from all edges
673
+ - [ ] Consistent colour palette within each variant (no accidental colour mixing)
674
+ - [ ] File saves without error and opens cleanly
675
+
676
+ ---
677
+
678
+ ## 9. Output Summary
679
+
680
+ | File | Format | Style | Tool |
681
+ |------|--------|-------|------|
682
+ | `deck/TenderIQ_v1_dark_professional.pptx` | PPTX | Dark navy + gold | python-pptx |
683
+ | `deck/TenderIQ_v2_clean_minimal.pptx` | PPTX | White + blue, minimal | python-pptx |
684
+ | `deck/TenderIQ_v3_government_official.pptx` | PPTX | Government blue + saffron | python-pptx |
685
+ | `deck/TenderIQ_v4_modern_gradient.pdf` | PDF | Purple-blue gradient | reportlab |
686
+ | `deck/TenderIQ_v5_data_forward.pptx` | PPTX | Charts + data viz | python-pptx |
687
+ | `deck/TenderIQ_v6_infographic.pdf` | PDF | Large icons + numbers | reportlab |
688
+
689
+ All output to `deck/`. Delete `TenderIQ_Pitch.pdf` (the old bad one) after creating the new files.