एक parent ने हमारे agent से कहा कि एक student की science-fair report — एक thermoelectric drinking-water dispenser के बारे में Word document — को एक city-level innovation competition के लिए presentation में बदल दे। एक असली task, असली deadline के साथ, और output पढ़ने वाला एक असली teacher।
तैयार deck अच्छी निकली — इतनी साफ़ कि editable version उस fancy rendered वाली जितनी ही polished दिखी। लेकिन वहाँ पहुँचने में चार अलग-अलग तरीकों से चीज़ें टूटीं, और हर टूट वैसा bug था जो तभी मिलता है जब कोई असल में file download करके उसे school laptop पर खोलता है। यह रहा क्या हुआ, और इसकी वजह से हमने system में क्या बदला।
टूट 1: तीन slides ख़ाली लौटीं
Preview बिल्कुल perfect दिखा। Downloaded HTML नहीं — नौ images blank render हुईं।
वजह: deck ने images को relative path से refer किया था (src="assets/chart.png"),
जो workspace preview के अंदर ठीक resolve होता है, लेकिन .html file अकेले downloads
folder में पहुँचते ही कहीं नहीं ले जाता।
जो fix मायने रखता है वह "images embed करो" नहीं है — वह है invariant: किसी deck को
deliverable कहने से पहले grep -c 'src="assets/' का zero return करना
ज़रूरी है। Images को एक-एक करके patch करना ही वह तरीका है जिससे पहले fix की कोशिश तीन
charts को miss कर गई। इस कहानी का हर rule एक ही तरह से ख़त्म होता है: loop को check
से बंद करो, आँखों से नहीं।
टूट 2: charts जो सिर्फ़ online मौजूद हैं
Interactive chart libraries एक live canvas पर render करती हैं। हमारे preview के scroll-mode DOM clone में painted pixels ग़ायब हो जाते हैं; offline, CDN script पहुँचती ही नहीं। ऐसी deck के लिए जिसे classroom में project करना है, "online होने पर काम करता है" काफ़ी नहीं है — इसलिए presentation decks अब charts को पहले से PNG में render करके images के रूप में embed करती हैं। Interactive charts तभी option रहते हैं जब environment ज्ञात हो और interaction ही असली मक़सद हो।
टूट 3: वह export जो fit नहीं हो सका
user को दो versions चाहिए थे: एक polished rendered PPTX और एक editable जिसे student present करने से पहले tweak कर सके। editable-export pipeline में एक hard input cap निकला — एक fully self-contained deck बहुत बड़ी हो जाती है — और उसने relative-path images भी गिरा दीं और text boxes ग़लत तरीके से merge किए। तो editable deck को python-pptx से natively दोबारा बनाया गया। इसने तीन और असली-दुनिया की failures उजागर कीं:
- Font-size का हिसाब screen से नहीं, slide से आना चाहिए। एक 16:9
slide 960×540pt होती है जबकि design canvas 1920×1080px होता है, तो
pt = px × 0.5— intuitive 96dpi conversion हर run को 50% बड़ा कर देता है और text हर जगह wrap होकर टकरा गया। - Layout अलग-अलग font metrics में भी टिका रहना चाहिए। "Big number + small caption" जोड़े browser में ख़ूबसूरती से align हुए और WPS में overlap हो गए, जिसकी glyph widths अलग हैं। उन्हें vertically stack करना immune है; fixed offsets के साथ side-by-side नहीं।
- Geometry को एक lint चाहिए। एक cover image slide edge से 200px बाहर निकल गई — पकड़ी गई parent की आँखों से, build से नहीं। हर shape को अब save से पहले एक bounds assertion मिलती है।
टूट 4: verification जिसने deliverable तोड़ दी
QA script ने एक बार validate करते समय तैयार file को उसकी जगह से हटा दिया — check ने
ख़ुद checked की जा रही चीज़ को नष्ट कर दिया। दो शांत सबक़ भी बचे: batch text edits को
per-item tolerance और बचे हुए residue के लिए एक leftover-grep चाहिए, और
chart numbers सिर्फ़ source document की tables से आने चाहिए — कभी भी किसी छोटे
screenshot से दोबारा नहीं पढ़े जाने चाहिए, जहाँ एक बार 4.62 बन गया था 5.89।
Product में क्या बदला
इनमें से हर एक अब agent की skill set में लिखा हुआ rule है — वही skills जो हर user को मिलती हैं। Delivery-state invariant (zero external references, hash-verified), export pipeline की limits, python-pptx की geometry और layout rules, smoke-one-slide-then-batch builds, और वह QA loop जो hand over करने से पहले हर page render करता है। हमने raw write-up को भी एक workspace skill के रूप में रखा, ताकि किसी असली project के सबक़ evaporate होने के बजाये compound हों।
"AI slides बनाता है" का यही वह हिस्सा है जिसे कोई demo नहीं करता: file को school laptop, WPS install और projector तक का सफ़र भी survive करना होता है। "Preview में बढ़िया दिखता है" और "हर जगह सही खुलता है" के बीच का gap ठीक वही जगह है जहाँ craft रहती है — और यही वजह है कि हम असली tasks को ख़ुद product से गुज़ारते हैं और हर टूट को लिखते हैं।
वही pipeline ख़ुद आज़माएँ Document to Slides पर — free preview, सिर्फ़ तब pay करें जब आपको clean file चाहिए।