diff --git a/config.json b/config.json index e9a39b3..bacbf4b 100644 --- a/config.json +++ b/config.json @@ -60,11 +60,6 @@ "git": 14400 } }, - "newsletter_cercetasi": { - "enabled": true, - "cron": "0 17 * * 4,5,1", - "channel": "echo-core" - }, "allowed_tools": [ "Read", "Edit", @@ -109,7 +104,7 @@ "949388626146517022" ], "user_name": "Marius", - "default_voice": "F1", + "default_voice": "M1", "auto_leave_minutes": 5, "stt_model": "/home/moltbot/echo-core/models/whisper-small-ro-cv11-int8" }, diff --git a/cron/jobs.json b/cron/jobs.json index 8c311d0..713262f 100644 --- a/cron/jobs.json +++ b/cron/jobs.json @@ -11,9 +11,9 @@ "report_on": "changes", "timeout": 120, "enabled": true, - "last_run": "2026-06-27T16:00:00.001505+00:00", + "last_run": "2026-07-09T10:00:00.001988+00:00", "last_status": "ok", - "next_run": "2026-06-30T10:00:00+00:00" + "next_run": "2026-07-09T16:00:00+00:00" }, { "name": "security-audit-daily", @@ -43,9 +43,9 @@ "report_on": "never", "timeout": 120, "enabled": true, - "last_run": "2026-06-27T03:30:00.002414+00:00", + "last_run": "2026-07-09T03:30:00.002154+00:00", "last_status": "ok", - "next_run": "2026-06-28T03:30:00+00:00" + "next_run": "2026-07-10T03:30:00+00:00" }, { "name": "archive-tasks-daily", @@ -59,9 +59,9 @@ "report_on": "changes", "timeout": 60, "enabled": true, - "last_run": "2026-06-27T03:00:00.001794+00:00", + "last_run": "2026-07-09T03:00:00.001431+00:00", "last_status": "ok", - "next_run": "2026-06-28T03:00:00+00:00" + "next_run": "2026-07-10T03:00:00+00:00" }, { "name": "backup-config", @@ -75,9 +75,9 @@ "report_on": "never", "timeout": 120, "enabled": true, - "last_run": "2026-06-27T02:00:00.001781+00:00", + "last_run": "2026-07-09T02:00:00.001391+00:00", "last_status": "ok", - "next_run": "2026-06-28T02:00:00+00:00" + "next_run": "2026-07-10T02:00:00+00:00" }, { "name": "insights-extract", @@ -243,9 +243,9 @@ "prompt": "Heartbeat check. Rulează src/heartbeat.py printr-un scurt raport de status.\nDacă nu e nimic de raportat (email=0, calendar nu are evenimente <2h, kb ok), răspunde doar cu HEARTBEAT_OK și oprește-te — nu trimite mesaj.\nDacă e ceva: raport scurt pe Discord #echo-work.", "allowed_tools": [], "enabled": true, - "last_run": "2026-06-27T18:00:00.001107+00:00", + "last_run": "2026-07-09T14:00:00.001126+00:00", "last_status": "ok", - "next_run": "2026-06-28T06:00:00+00:00" + "next_run": "2026-07-09T18:00:00+00:00" }, { "name": "night-execute", diff --git a/cron/newsletter-cercetasi-state.json b/cron/newsletter-cercetasi-state.json index b5e2a97..1afb5bc 100644 --- a/cron/newsletter-cercetasi-state.json +++ b/cron/newsletter-cercetasi-state.json @@ -1,5 +1,5 @@ { - "last_sent": 24, + "last_sent": 25, "year": 2026, - "last_sent_at": "2026-06-25T17:01:48.783259+00:00" + "last_sent_at": "2026-07-02T19:00:58.783724+00:00" } diff --git a/memory/kb/facebook/2026-06-29_tony-robbins-top-two-needs.md b/memory/kb/facebook/2026-06-29_tony-robbins-top-two-needs.md new file mode 100644 index 0000000..8adaf01 --- /dev/null +++ b/memory/kb/facebook/2026-06-29_tony-robbins-top-two-needs.md @@ -0,0 +1,60 @@ +# Cele 6 Nevoi Fundamentale — Tony Robbins + +**Sursa:** https://www.facebook.com/share/v/18up5bw3Co/ +**Data:** 2026-06-29 +**Tags:** @coaching @growth @psychology + +--- + +## TL;DR + +Tony Robbins explica cele 6 nevoi fundamentale ale omului si cum primele doua (top two needs) iti guverneaza toate deciziile. Exercitiu practic: identifica-ti top 2 nevoi actuale, costul lor, si ce nevoi ti-ar trebui pentru a trece la urmatorul nivel. + +--- + +## Cele 6 Nevoi Fundamentale (Human Needs Psychology) + +1. **Certainty** (siguranta, confort, predictibilitate) +2. **Uncertainty / Variety** (noutate, surpriza, adrenalina) +3. **Significance** (a fi unic, important, special, remarcat) +4. **Love & Connection** (iubire, apartenta, legatura cu ceilalti) +5. **Growth** (crestere, evolutie, progres) +6. **Contribution** (a contribui la ceva mai mare decat tine) + +--- + +## Povestea ilustrativa — fata goth de 13 ani + +Tony vede o fata cu look goth (13 cercelusi, machiaj intens) care urmareste un baiat. Conversatie rapida dezvaluie: +- **Nevoie #1: Significance** — 13 cercelusi, "nu sunt ca ceilalti, sunt unica, speciala, diferita" +- **Nevoie #2: Certainty / Comfort** — breloc Tigger de la tata, cearceafuri Tigger, tapet Tigger — confortul copilariei ca ancora + +Observatie: toata "duritatea" exterioara era o strategie de significance. Sub ea, nevoia de confort era la fel de puternica. + +--- + +## Exercitiu practic (din video) + +### Intrebarea 1 — Nevoi actuale (cum ai trait pana acum) +- Care sunt top 2 nevoi **dupa care ai trait** (nu ce ai vrut, ci cum ai functionat)? +- Ce te-a costat sa ai aceste nevoi in top? Ce ai pierdut? Ce relatii/sanatate/energie a suferit? + +### Intrebarea 2 — Nevoi pentru urmatorul nivel +- Care ar trebui sa fie top 2 nevoi pentru a merge la urmatorul nivel al vietii? +- Daca ai face schimbarea, cum s-ar schimba viata in bine? + +--- + +## Insight-uri cheie + +- **Nu ce vrei, ci cum traiesti** — toata lumea "vrea" iubire, dar multi pun certainty sau significance inaintea ei, deci de fapt iubirea nu e prima nevoie operationala. +- **Top 2 nevoi iti ghideaza toate deciziile** — cand stii ale tale si ale celorlalti, stii ce probleme vor aparea. +- **Schimbarea de nevoi = schimbare de identitate** — nu e mintala, e somatica ("inside your body, not just your mind"). + +--- + +## Idei acționabile + +- [ ] Scrie top 2 nevoi dupa care ai trait pana acum — fii sincer, nu ce vrei sa fie @coaching +- [ ] Scrie costul concret: ce ai ratat/stricat avand acele nevoi in top @growth +- [ ] Decide top 2 nevoi pentru urmatorul nivel si descrie cum s-ar schimba viata @growth diff --git a/memory/kb/facebook/index.md b/memory/kb/facebook/index.md index 54c03b5..aa63c64 100644 --- a/memory/kb/facebook/index.md +++ b/memory/kb/facebook/index.md @@ -1,6 +1,6 @@ # Index — facebook/ -> 10 note. Citește acest index întâi; deschide doar fișierele relevante. +> 11 note. Citește acest index întâi; deschide doar fișierele relevante. - **[Love Yourself Even If They Don't](2026-04-29_julien-blanc-love-yourself.md)** `#self-love #self-esteem #social-approval #mindset` Julien Blanc face un exercițiu pe stradă: îl întreabă pe un trecător care e artistul lui preferat. Răspunsul: Glenn Gould. Nimeni din grup n @@ -22,3 +22,5 @@ Creierul tău poate schimba starea în 15 secunde fără să-ți schimbi viața. Trei trucuri: (1) **Face feedback** — relaxează fața ușor 15 sec, - **[7 Micro Habits That Rewire Your Happiness](2026-06-07_7-micro-habits-rewire-happiness.md)** 7 micro-obiceiuri bazate pe psihologie pentru a reprograma creierul spre fericire: zâmbetul de 3 secunde (declanșează dopamină/serotonină), +- **[Cele 6 Nevoi Fundamentale — Tony Robbins](2026-06-29_tony-robbins-top-two-needs.md)** `@growth` + Tony Robbins explica cele 6 nevoi fundamentale ale omului si cum primele doua (top two needs) iti guverneaza toate deciziile. Exercitiu prac diff --git a/memory/kb/index.json b/memory/kb/index.json index 62e81bb..f8a1b3d 100644 --- a/memory/kb/index.json +++ b/memory/kb/index.json @@ -1,5 +1,106 @@ { "notes": [ + { + "file": "notes-data/youtube/2026-07-08_fine-tune-modele-mari-kimi-k27.md", + "title": "Fine-Tune the biggest open-source models (even with a bad PC)", + "date": "2026-07-08", + "tags": [], + "domains": [ + "work", + "growth" + ], + "types": [], + "category": "youtube", + "project": null, + "subdir": null, + "video": "", + "tldr": "Tutorial complet despre cum se fine-tunează modele AI masive (ex: Kimi K2.7 — 1 trilion parametri) pe date proprii, fără hardware de sute de mii de dolari, folosind platforma **Fireworks AI** și tehni..." + }, + { + "file": "notes-data/youtube/2026-07-04_anti-aging-mitochondria-martin-picard.md", + "title": "Anti-Aging Expert: This Reverses Gray Hairs, Restores Your Youth & Boosts Your Energy!", + "date": "2026-07-04", + "tags": [], + "domains": [ + "health", + "growth" + ], + "types": [], + "category": "youtube", + "project": null, + "subdir": null, + "video": "", + "tldr": "Dr. Martin Picard explică de ce mitochondriile — nu genele — determina cat de repede imbatranesti. Secretul anti-aging nu e o suplimentare sau dieta, ci **alocarea eficienta a energiei**. Stresul cron..." + }, + { + "file": "notes-data/youtube/2026-07-04_multi-millionaire-10x-income-side-hustles.md", + "title": "Multi-Millionaire: Cele mai bune side hustles pentru 10x Income", + "date": "2026-07-04", + "tags": [], + "domains": [ + "growth" + ], + "types": [], + "category": "youtube", + "project": null, + "subdir": null, + "video": "", + "tldr": "Chris Koerner explică cum pornești o afacere cu $1k-$5k și ce principii l-au dus la succes cu 35+ proprietăți RV și multiple business-uri. Esența: alege unsexy, caută unfair advantage personal, evită ..." + }, + { + "file": "notes-data/youtube/2026-07-04_hiking-food-250g-protein-endurance.md", + "title": "Hiking Food: 250g Protein Secret for Endurance", + "date": "2026-07-04", + "tags": [], + "domains": [ + "health", + "growth" + ], + "types": [], + "category": "youtube", + "project": null, + "subdir": null, + "video": "", + "tldr": "Un hiker cu 20.000 de mile pe trasee explică sistemul lui de nutriție optimizat pentru endurance: proteina ridicată (1.3-1.5g/kg corp), grăsimi ca sursă primară de energie, carbohidrați naturali doar ..." + }, + { + "file": "notes-data/facebook/2026-06-29_tony-robbins-top-two-needs.md", + "title": "Cele 6 Nevoi Fundamentale — Tony Robbins", + "date": "2026-06-29", + "tags": [], + "domains": [ + "growth" + ], + "types": [ + "coaching" + ], + "category": "facebook", + "project": null, + "subdir": null, + "video": "", + "tldr": "Tony Robbins explica cele 6 nevoi fundamentale ale omului si cum primele doua (top two needs) iti guverneaza toate deciziile. Exercitiu practic: identifica-ti top 2 nevoi actuale, costul lor, si ce ne..." + }, + { + "file": "notes-data/youtube/2026-06-29_launch-million-dollar-startup-ai.md", + "title": "Watch me launch a million dollar startup with AI (live)", + "date": "2026-06-29", + "tags": [ + "antreprenoriat", + "ai-marketing", + "validare", + "startup" + ], + "domains": [ + "work", + "growth" + ], + "types": [], + "category": "youtube", + "project": null, + "subdir": null, + "video": "", + "tldr": "Un playbook de 9 prompts copy-paste care duce de la idee la landing page live cu reclame Meta, în sub 30 de minute. Cheia: \"vibe marketing\" (nu coding) + validare pre-vânzare ÎNAINTE să construiești p..." + }, { "file": "notes-data/youtube/2026-06-27_jeremy-grantham-ai-bubble-warning.md", "title": "Billionaire's WARNING: I'm SELLING. The Crash Is Already Here! — Jeremy Grantham", @@ -22,7 +123,38 @@ "project": null, "subdir": null, "video": "https://www.youtube.com/watch?v=32u5T6lO8qk", - "tldr": "*Notă: Sumarizarea va fi adăugată de Echo.*" + "tldr": "Jeremy Grantham — 87 ani, 60 ani experiență, 165 miliarde $ gestionați — avertizează că suntem în cea mai mare bulă investițională din istoria SUA, generată de AI. Sfatul său: vinde actiunile US tech ..." + }, + { + "file": "notes-data/youtube/2026-06-27_djokovic-discipline-changes-everything.md", + "title": "Discipline Changes Everything | Novak Djokovic", + "date": "2026-06-27", + "tags": [], + "domains": [ + "growth", + "health" + ], + "types": [ + "coaching" + ], + "category": "youtube", + "project": null, + "subdir": null, + "video": "", + "tldr": "Djokovic vorbeste despre transformarea sa prin disciplina, nutritie si mentalitate. Punctul central: limitele sunt constructe mentale, nu realitate. Mediul inconjurator face sau desface un obicei. Rel..." + }, + { + "file": "notes-data/youtube/2026-06-27_cody-sanchez-unwanted-land.md", + "title": "Why I'm Buying UNWANTED Land (And You Should Too) | Cody Sanchez", + "date": "2026-06-27", + "tags": [], + "domains": [], + "types": [], + "category": "youtube", + "project": null, + "subdir": null, + "video": "", + "tldr": "Cody Sanchez cumpara 10 acri in West Texas pentru sub $10,000 in mai putin de o saptamana — ca experiment sa vada daca visul american e inca accesibil la pret mic. Concluzia: poti cumpara teren fara m..." }, { "file": "notes-data/youtube/2026-06-27_google-open-knowledge-format.md", @@ -10060,11 +10192,11 @@ } ], "stats": { - "total": 581, + "total": 589, "by_domain": { - "work": 199, - "health": 101, - "growth": 267, + "work": 201, + "health": 104, + "growth": 274, "sprijin": 39, "scout": 9 }, @@ -10074,14 +10206,14 @@ "conversations": 0, "emails": 22, "exercitii": 4, - "facebook": 10, + "facebook": 11, "health": 6, "insights": 46, "projects": 234, "reflectii": 3, "retete": 1, "tools": 7, - "youtube": 151, + "youtube": 158, "memory": 44 } }, diff --git a/memory/kb/index.md b/memory/kb/index.md index 40848ae..272b107 100644 --- a/memory/kb/index.md +++ b/memory/kb/index.md @@ -7,14 +7,14 @@ - **[conversations/](conversations/index.md)** — 1 note - **[emails/](emails/index.md)** — 22 note - **[exercitii/](exercitii/index.md)** — 4 note -- **[facebook/](facebook/index.md)** — 10 note +- **[facebook/](facebook/index.md)** — 11 note - **[health/](health/index.md)** — 6 note - **[insights/](insights/index.md)** — 46 note - **[projects/](projects/index.md)** — 234 note - **[reflectii/](reflectii/index.md)** — 3 note - **[retete/](retete/index.md)** — 1 note - **[tools/](tools/index.md)** — 7 note -- **[youtube/](youtube/index.md)** — 151 note +- **[youtube/](youtube/index.md)** — 158 note ## Note la rădăcină diff --git a/memory/kb/youtube/2026-06-27_cody-sanchez-unwanted-land.md b/memory/kb/youtube/2026-06-27_cody-sanchez-unwanted-land.md new file mode 100644 index 0000000..e300321 --- /dev/null +++ b/memory/kb/youtube/2026-06-27_cody-sanchez-unwanted-land.md @@ -0,0 +1,84 @@ +# Why I'm Buying UNWANTED Land (And You Should Too) | Cody Sanchez + +**Sursa:** https://youtu.be/qewYYObfsiA +**Data:** 2026-06-27 +**Durata:** 21:00 +**Tags:** @money @real-estate @business + +--- + +## TL;DR + +Cody Sanchez cumpara 10 acri in West Texas pentru sub $10,000 in mai putin de o saptamana — ca experiment sa vada daca visul american e inca accesibil la pret mic. Concluzia: poti cumpara teren fara multi bani, mai repede decat ti se spune, si fara permisiunea altora. + +--- + +## Cum a facut-o — framework in 3 pasi + +1. **Criterii** — ce vrei? (locatie, suprafata, restrictii) +2. **Budget** — cat max? (al lui: $10K) +3. **Timeline** — cand inchei? (al lui: 1 saptamana) + +--- + +## Cum a gasit terenul + +- Platforma: **land.com** — favoriteaza listinguri, filtrezi dupa locatie + pret +- Strategia de locatie: West Texas (langa Marfa) = teren ieftin + aproape de national parks = turisti +- **Realtor specialist** in teren raw, nu generic — Phil i-a gasit in final ce voia +- Regula de trei la apeluri: suni 3 realtor-i, astepti sa te sune unul inapoi + +--- + +## Costuri reale (all-in) + +| Item | Cost | +|------|------| +| 10 acri teren | $9,000 | +| Benzina/transport | $200 | +| Title check | $500 | +| Comision realtor | $300 | +| **Total** | **~$10,000** | + +--- + +## Modele de profit pe teren raw + +- **Glamping / camping** — rulota/camper turnkey de pe Facebook Marketplace (~$16K), inchiriata la $80–150/noapte +- **Yurt-uri** (Mongolian gur) — $125–150K per unitate construit; un complex de 10 yurturi face $800K gross / $300K net pe an +- **TP tents / containere** — setup ieftin ($10–30K) +- **Agricultural exemptions** — taxe mai mici daca ai vaci, albine, wildlife monitoring (vanatoare/numaratoare cerbi) — minim 10 acri + +--- + +## 5 scam-uri de evitat la teren + +1. **Vanzatorul nu detine terenul** → verifica intotdeauna titlul (title policy ~$500) +2. **Terenul nu e ce zic** → inspectie in option period (10 zile) +3. **Owner financing abuziv** → clauze care permit recuperarea integrala a terenului la o singura intarziere de plata +4. **Flood planes** — chiar si in desert, drenajul conteaza +5. **Mineral rights** — o companie energetica poate detine drepturi sa foreze pe terenul tau + +--- + +## Hack-uri practice + +- **Locatie**: cumpara ieftin langa un oras turistic (Marfa, Big Bend) — turistii vin, dar se intorc la tine sa "scape de multime" +- **Option period**: negociaza 10 zile sa verifici: apa (foraj put), septic, electricitate +- **Survey**: cere title company sa comande un survey — mizeaza steak-uri la colturile terenului +- **Parteneri**: poti pune un camper/rulota pe terenul altcuiva — impart profitul +- **Procese, nu job**: checklist-uri per unitate + staff = business, nu job glorificat + +--- + +## Quote + +> "Those who say it's impossible should get out of the way of those of us who are doing it." + +--- + +## Idei acționabile + +- [ ] Exploreaza land.com pentru terenuri in zone rurale ieftine langa atractii turistice @real-estate +- [ ] Calculeaza: 1 rulota/camper $16K → $100/noapte × 200 nopti = $20K/an = breakeven in 1 an @money +- [ ] La orice cumparare teren: title policy + option period 10 zile + verify water/electric/septic @real-estate diff --git a/memory/kb/youtube/2026-06-27_djokovic-discipline-changes-everything.md b/memory/kb/youtube/2026-06-27_djokovic-discipline-changes-everything.md new file mode 100644 index 0000000..0d704cc --- /dev/null +++ b/memory/kb/youtube/2026-06-27_djokovic-discipline-changes-everything.md @@ -0,0 +1,52 @@ +# Discipline Changes Everything | Novak Djokovic + +**Sursa:** https://youtu.be/Gj8TdHnIfuk +**Data:** 2026-06-27 +**Durata:** 15:24 +**Tags:** @growth @health @coaching + +--- + +## TL;DR + +Djokovic vorbeste despre transformarea sa prin disciplina, nutritie si mentalitate. Punctul central: limitele sunt constructe mentale, nu realitate. Mediul inconjurator face sau desface un obicei. Relatia cu tatalsau si sentimentul de "a nu fi de ajuns" l-au condus mai departe decat succesul in sine. La 38 de ani, inca testeaza limite — din curiozitate, nu din ego. + +--- + +## Puncte cheie + +- **Mediul e totul** — stiinta spune 21 de zile pentru un nou obicei, dar fara mediu suportiv e aproape imposibil. Suntem fiinte sociale, tribale — avem nevoie sa apartinem chiar si unui singur om. +- **Limitele sunt constructe mentale** — nu se considera ca are limite. Crede ca oamenii isi construiesc propriile plafoane in minte. +- **Nutritia l-a transformat** — dupa 3 ani fara slam, ajustarea nutritiei a schimbat totul. Urca in sus. +- **Analiza infrângerilor** — Kobe Bryant il sfatuia sa revada intervale specifice din meciurile pierdute, indiferent de disconfort. Acolo e lectia reala. +- **Sentimentul de "nu sunt de ajuns"** — vine din relatia cu tatal sau. Il motiveaza, dar e si o batalie zilnica. Nu cauta sa-l elimine, cauta echilibrul. +- **Ego vs umilinta** — dupa ce "umblai pe apa", egoul te duce in locuri din care e greu sa revii. Lectia: ce a functionat 20 de ani nu e garantat sa functioneze acum. +- **Plictiseala ca instrument** — fiului sau ii spune: sta cu gandurile tale. Nu pune ecranul imediat. Plictiseala e momentul cel mai creativ. +- **Sportul ca viata condensata** — un meci de tenis e o viata intr-o ora: esti egal la start, treci prin indoieli, frici, ups and downs, si la final câstigi sau pierzi. De aceea oamenii se identifica cu atletii. +- **Transitia dupa sport** — adrenalina trebuie re-canalizata, nu pur si simplu oprita. Isi pregateste urmatoarea pasiune: sanatate, wellness, wellbeing. +- **Battlefield = crestere** — a ales LA tocmai pentru ca acolo vede cel mai bun si cel mai rau din el. Slabiciunea te tine pe drum, forta te ajuta sa impartasesti. + +--- + +## Quote-uri + +> "Not having success is not an option. It's basically a matter of existence, a survival of my family." + +> "The limits are normally constructs in our mind." + +> "I feel like I can use tennis as a platform to evolve into a better human being." + +> "When you are bored, you don't have to instantly take a book or a screen. You need to also learn how to be with your thoughts." + +> "On the battlefield, you see the best of yourself and the worst of yourself. And the worst of myself reminds me to keep going." + +> "If you are only reminded of your strength, you just have your ego. If you were only reminded of your weaknesses, you would be depressed. It's that dichotomy." + +--- + +## Idei acționabile + +- [ ] **Audit mediu** — cine sunt oamenii din jur? Sustin schimbarile pe care vrei sa le faci? @growth +- [ ] **Revede un esec recent** — un interval specific dintr-o situatie pierduta. Ce ai putea face diferit? @coaching +- [ ] **10 minute fara ecran** — dimineata sau seara, sta cu gandurile. Nu cauta sa le umpli. @health +- [ ] **Battlefield personal** — ce situatie/mediu te scoate din zona de confort si te face sa cresti? Mergi acolo mai des. @growth diff --git a/memory/kb/youtube/2026-06-29_launch-million-dollar-startup-ai.md b/memory/kb/youtube/2026-06-29_launch-million-dollar-startup-ai.md new file mode 100644 index 0000000..1955e20 --- /dev/null +++ b/memory/kb/youtube/2026-06-29_launch-million-dollar-startup-ai.md @@ -0,0 +1,64 @@ +# Watch me launch a million dollar startup with AI (live) + +**URL:** https://youtu.be/Tz881ee0f8M +**Durata:** 21:59 +**Canal:** L7V (Michia — serial entrepreneur, VC) +**Data:** 2026-06-29 +**Tags:** @work @growth #antreprenoriat #ai-marketing #validare #startup + +--- + +## TL;DR + +Un playbook de 9 prompts copy-paste care duce de la idee la landing page live cu reclame Meta, în sub 30 de minute. Cheia: "vibe marketing" (nu coding) + validare pre-vânzare ÎNAINTE să construiești produsul. Tools: AppMagic (research piață), Claude Code + MCP-uri (Higgsfield, Meta Ads, Vercel). Filosofia centrală: găsești o categorie care deja câștigă bani → cauți "blue ocean" în acea categorie → lansezi landing page → testezi cu reclame plătite → construiești doar dacă oamenii își dau emailul. + +--- + +## Puncte cheie + +- **Validare înainte de construire** — cheltuie bani pe reclame să testezi ideea ÎNAINTE să scrii cod. E mai ieftin să afli că nimeni nu vrea produsul decât să-l construiești și să afli după. +- **AppMagic.rocks** (gratuit) — vezi ce aplicații câștigă deja bani în categoria ta. Nu ghici piața, caut-o în date reale. +- **Blue ocean în categorii dovedite** — nu concura direct, găsește un unghi nou în nișa care deja are tracțiune (ex: plant identifier → AI garden designer cu before/after viral). +- **9 prompts, tot playbook-ul** — disponibile gratuit la l7v.com/ai, mereu actualizate cu cele mai noi modele. +- **MCP-uri conectate la Claude** — Higgsfield (imagini + video ads), Meta Ads Manager, Vercel. Claude orchestrează totul fără să scrii cod. +- **Higgsfield Marketing Studio** — template-uri de ad-uri dovedite (UGC, before/after, comparison table). Nu inventezi formate, le folosești pe cele care funcționează. +- **Pixel Meta din prima zi** — setezi tracking înainte să pornești reclame ca Meta's AI să învețe cine convertește și să găsească mai mulți. +- **Self-improving loop** — ultimul prompt: extrage ad-urile cu cel mai mic cost per conversie → iterează cu Higgsfield → trimite noi teste. Se îmbunătățește singur în timp. +- **Vercel gratuit** pentru deployment — URL-ul de vercel.app convertește, nu e nevoie de domeniu propriu în faza de validare. + +--- + +## Quotes notabile + +> "Forget vibe coding. Vibe marketing is printing millionaires faster than any time in history." + +> "AI does the work, we get to have a bit more fun in life. That's the whole point, right?" + +> "If you are not taking advantage of this, you are being left behind by the guys that are." + +> "It's much cheaper for you to validate people will buy what you're building than build it and then hope they will buy." + +--- + +## Flow complet (9 pași) + +1. **AppMagic** → găsești categoria cu tracțiune + top apps +2. **Prompt 1 Claude** → analizează app-ul, propune 5 blue ocean ideas +3. **Prompt 2** → alegi idea, Claude generează product spec complet (UX, culori, viral hooks) +4. **Prompt 3 + Higgsfield MCP** → generează mockup-uri și screenshot-uri app +5. **Prompt 4** → landing page cu quiz + email capture + dashboard admin +6. **Meta Ads Manager** → setezi pixel de conversie +7. **Prompt 5** → Claude adaugă pixelul în landing page via Meta MCP +8. **Higgsfield Marketing Studio prompt** → 20 reclame (UGC, before/after, video) +9. **Vercel MCP** → deploy landing page live +10. **Meta Ads prompt** → Claude uploadează și configurează campaniile automat +11. **Self-improve prompt** → rulezi periodic, extrage winners, iterează + +--- + +## Aplicabilitate pentru Marius + +- Playbook util pentru validarea rapidă a oricărui SaaS/tool înainte de investit timp în dev +- Pattern "găsești ce câștigă deja → blue ocean" — aplicabil și pentru features ERP ROA +- MCP-uri pentru Claude Code — model de referință pentru integrări externe +- l7v.com/ai — bookmark, prompts actualizate automat diff --git a/memory/kb/youtube/2026-07-04_anti-aging-mitochondria-martin-picard.md b/memory/kb/youtube/2026-07-04_anti-aging-mitochondria-martin-picard.md new file mode 100644 index 0000000..fdc5e1a --- /dev/null +++ b/memory/kb/youtube/2026-07-04_anti-aging-mitochondria-martin-picard.md @@ -0,0 +1,54 @@ +# Anti-Aging Expert: This Reverses Gray Hairs, Restores Your Youth & Boosts Your Energy! + +**Sursa:** https://m.youtube.com/watch?v=6xlmaorRY0w +**Invitat:** Dr. Martin Picard — Profesor Behavioral Medicine, Columbia; Director Mitochondrial Psychobiology Group +**Durata:** 2h 38min +**Tags:** @health @growth @antrenament @energie @longevitate + +--- + +## TL;DR + +Dr. Martin Picard explică de ce mitochondriile — nu genele — determina cat de repede imbatranesti. Secretul anti-aging nu e o suplimentare sau dieta, ci **alocarea eficienta a energiei**. Stresul cronic fura 60% din energia zilnica. Scopul de viata, miscarrea si somnul sunt cele mai puternice "medicamente" pentru mitocondrii. Parul alb poate fi reversibil. + +--- + +## Puncte cheie + +- **Suntem energie**: mitochondriile genereaza ATP — tot ce facem (gandire, emotii, miscare) consuma aceasta energie dintr-un buget finit. +- **Stresul = furt de energie**: hormonii de stres cresc consumul energetic cu **60%** — energia e furata de la procesele care te mentin tanar (imunitate, reparare ADN, productie de colagen). +- **Nu stresul, ci raspunsul la stres**: problema nu e stresul acut (e sanatos), ci stresul cronic si **rezistenta la stres** (a nu accepta ce nu poti controla). +- **Parul alb e reversibil**: cercetarile Picard arata ca stresul intens albesteste parul, iar reducerea stresului poate inversa procesul — dovada directa ca imbatranirea nu e unidirectionala. +- **Rezistenta la energie**: diabetul, Alzheimer, cancerul sunt boli de "rezistenta energetica" — celulele nu mai pot procesa energia eficient (similar cu rezistenta la insulina). +- **Scopul de viata = mitocondrii mai puternice**: studii pe creiere de oameni decedati arata ca cei cu sens puternic de viata au mitocondrii mai eficiente. +- **Mancatul mai mult NU = mai multa energie**: calitatea si sincronizarea conteaza mai mult decat cantitatea; breakfast nu e obligatoriu pentru toata lumea. +- **Maratonul dubleaza mitochondriile**: antrenamentul de rezistenta este cel mai puternic stimul pentru biogeneza mitocondrala. +- **Dementa = "Diabet tip 3"**: creierul isi pierde capacitatea de a procesa glucoza; comunitatile cu stil de viata activ + social au rate mult mai mici de dementa. +- **Red light therapy**: are potential pentru mitochondrii (fotobiomodulare), dar calitatea dispozitivelor variaza enorm — alege cu atentie. + +--- + +## Quotes + +> "It's not the stress that burns us down, it's the **response to stress**." + +> "We are really in service of the mitochondria. They allow us to be alive." + +> "The secret to anti-aging is the **proper allocation of energy**." + +> "Energy is real — it's the difference between feeling like you can change the world or feeling completely drained." + +--- + +## Idei actionabile + +- [ ] **Reduceti rezistenta**: cand simti tensiune (trafic, conflict, deadline) — nu lupta, accepta si redirecționeaza energia spre ce controlezi @health +- [ ] **Miscare aerobica regulata**: minim 3x/saptamana, zona 2 (conversation pace) — cel mai bun stimul mitocondrial @health +- [ ] **Dormit serios**: somnul e cand mitochondriile se repara — prioritate, nu optiune @health +- [ ] **Sens de viata clar**: oamenii cu scop puternic au mitocondrii mai eficiente — nu e woo, e biologie @growth +- [ ] **Stres acut DA, stres cronic NU**: expunere voluntara (sport, dus rece, post) = antrenament mitocondrial. Stres cronic (ruminate, ingrijorare) = furt de energie @health +- [ ] **Analize recomandate**: lactate la efort, GDF-15 (marker inflamatie mitocondriale), HbA1c + +--- + +*Salvat: 2026-07-04* diff --git a/memory/kb/youtube/2026-07-04_hiking-food-250g-protein-endurance.md b/memory/kb/youtube/2026-07-04_hiking-food-250g-protein-endurance.md new file mode 100644 index 0000000..a9a7330 --- /dev/null +++ b/memory/kb/youtube/2026-07-04_hiking-food-250g-protein-endurance.md @@ -0,0 +1,62 @@ +# Hiking Food: 250g Protein Secret for Endurance + +**Sursa:** https://youtu.be/-cKnhhJsaRs?si=ZFbpiFVGGGZ2tyDt +**Durata:** 19:22 +**Data:** 2026-07-04 +**Tags:** @health @growth + +--- + +## TL;DR + +Un hiker cu 20.000 de mile pe trasee explică sistemul lui de nutriție optimizat pentru endurance: proteina ridicată (1.3-1.5g/kg corp), grăsimi ca sursă primară de energie, carbohidrați naturali doar ca supliment în momentele de efort intens. Mâncare reală, neprocesată, puțini ingredienți. Plus suplimente esențiale: creatină, omega-3, magneziu, teanină pentru somn. + +--- + +## Puncte cheie + +- **Proteina e prioritatea #1** — 1.3-1.5g per livră de greutate corporală la eforturi intense. La 175 lbs = ~250g proteină/zi. Lipsa proteinei duce la catabolism muscular, oboseală și dureri. + +- **Grăsimile = combustibil de durata lungă** — Zone 1-2 de frecvența cardiacă (sub 150 bpm) = ardere predominant de grăsimi. Fat-adapted = poți merge ore fără a mânca, corpul folosește rezervele proprii. + +- **Carbohidrații = supliment, nu aliment de bază** — Zahăr natural (curmale, miere, fructe) din 90 în 90 calorii pe oră, nu bulk. Prea mult deodată → insulina → oboseală. RX Bars (5 ingrediente: curmale, albuș, migdale, caju, fructe) > geluri procesate. + +- **Mâncarea de pe traseu a lui:** + - Dimineața: pui/vită freeze-dried (2 cups reconstituit) + miere (12g zahăr natural) + bone broth + 1oz ulei de măsline + - Ziua: fistic (1800 cal/zi), beef jerky zero zahăr (3oz), 4-5 RX Bars (tăiate în jumătate, 1 jumate/oră) + - Seara: același meniu ca dimineața + +- **Suplimente zilnice:** + - Dimineața: greens powder (vitamine/minerale/probiotice) + creatina monohidrat 10g + vitamina D3 10.000UI + K2 + - Ziua: omega-3 3g + cofeina 100mg de 3x (300mg total) + - Seara: teanina + magneziu 1500mg (recuperare și frecventa cardiacă) + +- **Zone de antrenament:** 90% zone 1-2, 1x/săptămână V2max (sprinturi în urcare). Zone 3 = "zona gri" — nu antrenează nici endurance nici putere. + +- **Fat adaptation** — Keto/carnivore 1.5 ani → corp adaptat să ardă grăsimi primul. Fructele au revenit ca sursă de carbohidrați. Body fat 14% → 7-9%. + +- **App recomandat:** Cronometer — pentru calculat macros + +- **Carti recomandate:** "Training for the Uphill Athlete" și "The PE Diet" + +--- + +## Citate + +> "Most hikers are eating low protein, high carb, poisonous, pre-made meals with tons of ingredients you can't pronounce." + +> "Carbs are not required, but they can be very useful when used as a supplement for different activities." + +> "If you're finishing hiking days off sore, stiff, and exhausted, there's a simple fix." + +> "Your body is going to want to use fats as a great energy source for long endurance." + +--- + +## Idei acționabile + +- [ ] Dacă faci drumetii/sport de anduranta: prioritizeaza proteina peste carbohidrati +- [ ] Creatina monohidrat — simpla, ieftina, eficienta pentru creier + muschi + energie +- [ ] Magneziu + teanina seara = somn mai bun dupa efort fizic +- [ ] Mancare reala > mese procesate pre-ambalate (citeste ingredientele) +- [ ] Principiu aplicabil si non-hiking: carbohidratii naturali ca supliment, nu baza diff --git a/memory/kb/youtube/2026-07-04_multi-millionaire-10x-income-side-hustles.md b/memory/kb/youtube/2026-07-04_multi-millionaire-10x-income-side-hustles.md new file mode 100644 index 0000000..75930d5 --- /dev/null +++ b/memory/kb/youtube/2026-07-04_multi-millionaire-10x-income-side-hustles.md @@ -0,0 +1,96 @@ +# Multi-Millionaire: Cele mai bune side hustles pentru 10x Income + +**Sursa:** https://youtu.be/0K5a1ql3Oc0?si=Uqfps8H9NZr12oQL +**Durata:** 21:49 +**Invitat:** Chris Koerner — multi-milionar antreprenor, RV parks, e-commerce, ~$3-4M/an venit +**Data:** 2026-07-04 +**Tags:** @growth @business @money + +--- + +## TL;DR + +Chris Koerner explică cum pornești o afacere cu $1k-$5k și ce principii l-au dus la succes cu 35+ proprietăți RV și multiple business-uri. Esența: alege unsexy, caută unfair advantage personal, evită "mirage opportunities", găsește operatori buni și plătești-i din profit (nu equity). + +--- + +## Idei cu $1.000 + +### Wedding arch rental +- Construiești un arc din lemn ($300 materiale) → îl închiriezi la nunți pentru ~$1.000/eveniment +- NU mergi direct la mirese — mergi la **wedding planners** (suprafață mare, ating zeci de nunți lunar) +- Găsești planners pe: The Knot, Zola, WeddingWire — scrapezi emailuri și telefoane, toate publice +- 1 contact = potențial 1 nuntă/săptămână +- Alte idei similare: photo walls, charcuterie carts, custom pizza, aranjamente funerale + +### Email newsletter local +- Facebook/Instagram ad: "Afla ce se întâmplă în [Oraș], un email/săptămână" +- Cost achiziție subscriber: ~$0.50-$1 +- Cu $1.000 → 1.000 subscribers +- Monetizare: vânzare publicitate la $500/trimitere (= $500/lună din 1.000 sub-uri) +- ROI în 2 luni; scale prin copy-paste în alte orașe +- **Scrie personal, NU cu ChatGPT** — trebuie să sune ca un local autentic +- 10% din subscribers sunt business owners = potențiali sponsori chiar în lista ta + +--- + +## Idei cu $5.000 + +### RV Parks (micro, 3-10 locuri) +- De 3-10x mai profitabile decât case de închiriat, la același preț de cumpărare +- Risc distribuit pe mai mulți chiriași vs. un singur chiriaș +- **Cum găsești:** Google Maps, suni 100 parcuri, 2-3 sunt deal-uri bune +- **Cum cumperi:** seller financing — vânzătorul "ține nota", tu plătești din profit lunar + - Pitch: "Dacă nu funcționează, îți iei parcul înapoi + tot ce am plătit până acum" +- $2.000 pentru due diligence (inspecții + title policy) +- $3.000 capital operațional (curent, curățenie, lansare) +- Valorizare: cap rate = profit/preț. Cumperi la 10% cap rate → crești ocupancy → valoarea urcă la 8% cap rate → parc de $200k ajunge $360k + +--- + +## Principii de business + +### Unfair advantage +> "I will only start businesses today where I have an unfair advantage." +- Fiecare are un avantaj specific: cunoștințe, rețea, audiență, experiență de nișă +- Nu e rezervat celor bogați sau educați — un teenager poate ști Roblox mai bine decât oricine +- Prioritizezi ideile unde ai un "right to win" + +### Mirage opportunity +> "An industry that never seems to work for anybody but seems so obvious." +- Evitare industrii unde toată lumea încearcă dar nimeni nu reușește +- Exemple: grup apps (WhatsApp replacement), password managers, campus events apps, tools pentru podcasters (piață care renunță 95% în 6 luni) +- Dacă nu înțelegi DE CE nu funcționează → stai departe + +### Fishing analogy — testezi mult +- Antreprenoriatul = un ocean imens; cei mai mulți aruncă de câteva ori și se întorc acasă +- Secretul: testezi mai mult, nu mai adânc pe o singură idee +- Fiecare test mic (Facebook ads) îți dă semnale. Urmărești semnalele. + +### Unsexy = mai puțin competitiv +> "Everyone wants sexy means sexy is the most competitive." +- RV parks, wedding arches, email newsletters = nimeni nu se uită la ele +- Oportunitate tocmai pentru că nu e atrăgătoare + +### Operatori buni > equity +- Succesul vine din a găsi oameni buni care să conducă business-ul +- **Equity e supraestimată** — 90% din equity merge la zero +- Plătești operatorul din cash flow (trimestrial) → se simte antreprenor, e motivat real +- A greșit în 20s: promitea equity, era sincer, dar e de puțin folos dacă business-ul nu face exit + +--- + +## Cifre Chris Koerner +- Net profit RV parks + mobile home parks: $400k-$600k total în 7 ani +- Revenue: $3-4M/an +- 35+ proprietăți implicate + +--- + +## Citate + +> "Equity is overrated. I put a lot more emphasis on cash flow now in my 30s." + +> "I love the framework: 10,000 baby boomers are retiring every single day — buy their businesses or implement AI into them." + +> "The unsexy things are the most undercompeted." diff --git a/memory/kb/youtube/2026-07-08_fine-tune-modele-mari-kimi-k27.md b/memory/kb/youtube/2026-07-08_fine-tune-modele-mari-kimi-k27.md new file mode 100644 index 0000000..7e19b14 --- /dev/null +++ b/memory/kb/youtube/2026-07-08_fine-tune-modele-mari-kimi-k27.md @@ -0,0 +1,67 @@ +# Fine-Tune the biggest open-source models (even with a bad PC) + +**URL:** https://youtu.be/kxstlfc8Lw4 +**Durata:** 29:08 +**Autor:** David Andre +**Data salvat:** 2026-07-08 +**Tags:** @work @growth @ai @llm @fine-tuning + +--- + +## TL;DR + +Tutorial complet despre cum se fine-tunează modele AI masive (ex: Kimi K2.7 — 1 trilion parametri) pe date proprii, fără hardware de sute de mii de dolari, folosind platforma **Fireworks AI** și tehnica **LoRA**. Cost real pentru un fine-tune: ~$131. + +--- + +## Puncte cheie + +- **Kimi K2.7** este comparat cu Opus 4 și GPT-5, dar de 6-8x mai ieftin — unul dintre cele mai bune modele open-source acum +- **3 ingrediente** pentru fine-tuning: un model open-source, GPU-uri (prin platformă), un dataset de calitate +- **LoRA (Low Rank Adaptation)** = tehnica principă: nu antrenezi toți parametrii (imposibil), ci un "adapter" mic peste modelul înghețat — mult mai ieftin și rapid +- **HuggingFace** = sursa principală pentru datasets; recomandă dataset-uri generate de modele mai mari (ex: Fable) dacă fine-tunezi un model mare +- **Fireworks AI** = platforma folosită pentru training și deployment — interfață simplă, suportă LoRA pe Kimi K2.7, cu GPU-uri Nvidia B300 Blackwell (288 GB VRAM) +- **Costul real**: fine-tune pe dataset Fable 5 (~4600 rânduri, 1 epocă) = **$131**; un dataset mai mare a costat $800 +- **Format dataset**: JSONL în formatul specific Fireworks; autorul oferă un "skill" gratuit pentru conversia oricărui dataset HuggingFace la formatul corect +- **Agenți AI în workflow**: David folosește Pi Agent, Codex, Claude Code pentru a automatiza pașii: download dataset, conversie format, verificare, wiring backend +- **Comparație fine-tuned vs default**: versiunea fine-tunată pe Fable afișează chain-of-thought (gândire vizibilă), răspunsuri mai bine formatate — deoarece Fable include thinking traces în dataset +- **Deployment simplu pe Fireworks**: alegi modelul custom, region global, GPU-uri B300, autoscaling opțional — gata să servești inferențe + +--- + +## Pași practici (flux) + +1. Alege model open-source (ex: Kimi K2.7 code) +2. Alege dataset de pe HuggingFace (de preferință de la model mai mare decât cel pe care îl fine-tunezi) +3. Descarcă dataset cu HuggingFace CLI (`huggingface-cli download ...`) — necesită token HF +4. Convertește dataset în format JSONL compatibil Fireworks (min 1000 rânduri recomandat) +5. Pe Fireworks AI: Fine-tuning → Supervised → selectezi Kimi K2.7 code LoRA → uploadeazi dataset → start +6. Când e gata (~câteva ore): Deployments → Create → selectezi modelul custom → deploy pe B300 +7. Testează comparând răspunsurile față de modelul default + +--- + +## Quote-uri relevante + +> "If you want to fine-tune powerful models such as the ones with one trillion parameters, you'll need a lot of cutting-edge GPUs... each of these GPUs is like $40,000 and you can even buy eight at minimum." — de aceea folosești o platformă cloud + +> "High-quality data is one of the most important factors. If you have a shitty dataset, you're going to have a shitty model." + +> "A lot of you are wasting money on running everything on Opus or GPT-5, while you could get much better usage if you had the most powerful model for the planning and then the smaller open-source models that are faster." + +--- + +## Idei acționabile pentru Marius + +- [ ] Kimi K2.7 merită testat ca alternativă la Claude pentru task-uri repetitive (cost 7x mai mic) @work +- [ ] Fireworks AI = opțiune concretă dacă vrei să fine-tunezi un model pe date ROA/ERP (ex: răspunsuri standardizate pentru chatbot Maria) @work +- [ ] Dataset-ul pentru fine-tune chatbot Maria s-ar putea construi din întrebările frecvente ale clienților — deja ai sursa @work + +--- + +## Surse menționate + +- Fireworks AI: https://fireworks.ai +- HuggingFace datasets: https://huggingface.co/datasets +- Kimi K2.7 API: (primul link din video) +- Skill conversie dataset: (al doilea link din video — davidonj.com/skills) diff --git a/memory/kb/youtube/index.md b/memory/kb/youtube/index.md index 0e1920c..5b7ee7b 100644 --- a/memory/kb/youtube/index.md +++ b/memory/kb/youtube/index.md @@ -1,6 +1,6 @@ # Index — youtube/ -> 151 note. Citește acest index întâi; deschide doar fișierele relevante. +> 158 note. Citește acest index întâi; deschide doar fișierele relevante. - **[Talk to Claude on 3CX Phone System Tutorial (Full Setup)](2025-02-13_talk-to-claude-3cx-phone.md)** `@work` Tutorial complet pentru a vorbi cu Claude Code prin telefon, folosind 3CX (sistem telefonic cloud gratuit) + un proiect GitHub custom. Setup @@ -298,9 +298,23 @@ Tony Robbins (neidentificat explicit, dar stilul și conținutul sunt clare) explică de ce oamenii eșuează să aibă un breakthrough: atacă prob - **[Google Just Dropped a Masterclass on Agentic Engineering](2026-06-25_google-agentic-engineering-masterclass.md)** `@work @growth` Google a publicat un ghid de 51 de pagini despre AI-driven SDLC (Software Development Life Cycle). Concluzia centrală: **harness-ul (regulil +- **[Why I'm Buying UNWANTED Land (And You Should Too) | Cody Sanchez](2026-06-27_cody-sanchez-unwanted-land.md)** + Cody Sanchez cumpara 10 acri in West Texas pentru sub $10,000 in mai putin de o saptamana — ca experiment sa vada daca visul american e inca +- **[Discipline Changes Everything | Novak Djokovic](2026-06-27_djokovic-discipline-changes-everything.md)** `@growth @health` + Djokovic vorbeste despre transformarea sa prin disciplina, nutritie si mentalitate. Punctul central: limitele sunt constructe mentale, nu re - **[Google's New Release Just Fixed AI Systems (Open Knowledge Format)](2026-06-27_google-open-knowledge-format.md)** `@work @growth` Un video prezintă **Open Knowledge Format (OKF)** — un format *propus* pentru organizarea knowledge base-urilor astfel încât agenții AI să n - **[Billionaire's WARNING: I'm SELLING. The Crash Is Already Here! — Jeremy Grantham](2026-06-27_jeremy-grantham-ai-bubble-warning.md)** `@growth @work #youtube #to-summarize #investitii #bubble #AI #sanatate #economie` - *Notă: Sumarizarea va fi adăugată de Echo.* + Jeremy Grantham — 87 ani, 60 ani experiență, 165 miliarde $ gestionați — avertizează că suntem în cea mai mare bulă investițională din istor +- **[Watch me launch a million dollar startup with AI (live)](2026-06-29_launch-million-dollar-startup-ai.md)** `@work @growth #antreprenoriat #ai-marketing #validare #startup` + Un playbook de 9 prompts copy-paste care duce de la idee la landing page live cu reclame Meta, în sub 30 de minute. Cheia: "vibe marketing" +- **[Anti-Aging Expert: This Reverses Gray Hairs, Restores Your Youth & Boosts Your Energy!](2026-07-04_anti-aging-mitochondria-martin-picard.md)** `@health @growth` + Dr. Martin Picard explică de ce mitochondriile — nu genele — determina cat de repede imbatranesti. Secretul anti-aging nu e o suplimentare s +- **[Hiking Food: 250g Protein Secret for Endurance](2026-07-04_hiking-food-250g-protein-endurance.md)** `@health @growth` + Un hiker cu 20.000 de mile pe trasee explică sistemul lui de nutriție optimizat pentru endurance: proteina ridicată (1.3-1.5g/kg corp), grăs +- **[Multi-Millionaire: Cele mai bune side hustles pentru 10x Income](2026-07-04_multi-millionaire-10x-income-side-hustles.md)** `@growth` + Chris Koerner explică cum pornești o afacere cu $1k-$5k și ce principii l-au dus la succes cu 35+ proprietăți RV și multiple business-uri. E +- **[Fine-Tune the biggest open-source models (even with a bad PC)](2026-07-08_fine-tune-modele-mari-kimi-k27.md)** `@work @growth` + Tutorial complet despre cum se fine-tunează modele AI masive (ex: Kimi K2.7 — 1 trilion parametri) pe date proprii, fără hardware de sute de - **[thinking-on-paper](thinking-on-paper.md)** `@growth` Metoda "Thinking on Paper" — 3 principii: **Make it Wrong** (scrie repede, fără perfecționism), **Make it Shorter** (doar keywords), **Make diff --git a/src/main.py b/src/main.py index 882a96e..6af7fa1 100644 --- a/src/main.py +++ b/src/main.py @@ -83,27 +83,6 @@ def main(): scheduler = Scheduler(send_callback=_send_to_channel, config=config) client.scheduler = scheduler # type: ignore[attr-defined] - # Newsletter Cercetași checker (optional) - newsletter_config = config.get("newsletter_cercetasi", {}) - if newsletter_config.get("enabled"): - from src.newsletter_cercetasi import check_and_send as check_newsletter - from apscheduler.triggers.cron import CronTrigger as _CronTrigger - - async def _newsletter_tick() -> None: - try: - await check_newsletter(config, _send_to_channel) - except Exception as exc: - logger.error("Newsletter checker failed: %s", exc) - - nl_cron = newsletter_config.get("cron", "0 9 * * *") - scheduler._scheduler.add_job( - _newsletter_tick, - trigger=_CronTrigger.from_crontab(nl_cron), - id="__newsletter_cercetasi__", - max_instances=1, - ) - logger.info("Newsletter Cercetasi checker registered (cron: %s)", nl_cron) - # Telegram bot (optional — only if telegram_token exists) telegram_token = get_secret("telegram_token") telegram_app = None diff --git a/src/newsletter_cercetasi.py b/src/newsletter_cercetasi.py deleted file mode 100644 index 6877454..0000000 --- a/src/newsletter_cercetasi.py +++ /dev/null @@ -1,155 +0,0 @@ -"""Newsletter Cercetași checker — detects new editions and sends WhatsApp summaries.""" - -import asyncio -import json -import logging -import subprocess -from datetime import datetime, timezone -from pathlib import Path -from typing import Awaitable, Callable - -import httpx - -from src.claude_session import CLAUDE_BIN, PROJECT_ROOT, _safe_env, build_system_prompt - -log = logging.getLogger("echo-core.newsletter-cercetasi") - -NEWSLETTER_BASE_URL = "https://cercetaiis-newsletter.beehiiv.com/p/newsletter-{n}-din-{year}" -STATE_FILE = PROJECT_ROOT / "cron" / "newsletter-cercetasi-state.json" -KB_PROMPT_FILE = ( - PROJECT_ROOT / "memory" / "kb" / "projects" / "grup-sprijin" / "prompt-newsletter-cercetasi.md" -) -CLAUDE_TIMEOUT = 300 - - -def _read_state() -> dict: - try: - return json.loads(STATE_FILE.read_text()) - except (FileNotFoundError, json.JSONDecodeError): - return {"last_sent": 0, "year": datetime.now(timezone.utc).year} - - -def _write_state(state: dict) -> None: - STATE_FILE.parent.mkdir(parents=True, exist_ok=True) - STATE_FILE.write_text(json.dumps(state, indent=2, ensure_ascii=False) + "\n") - - -async def _newsletter_exists(n: int, year: int) -> bool: - """Return True if newsletter #{n}/{year} exists (HTTP 200, no redirect to 404 page). - - Beehiiv redirects non-existent newsletters: /p/newsletter-N-din-YEAR → /?404=... (302) - A real newsletter returns 200 directly without redirect. - """ - url = NEWSLETTER_BASE_URL.format(n=n, year=year) - try: - async with httpx.AsyncClient(follow_redirects=False) as client: - resp = await client.get(url, timeout=10) - return resp.status_code == 200 - except Exception as e: - log.debug("Newsletter #%d/%d check failed: %s", n, year, e) - return False - - -def _generate_summary(n: int, year: int) -> str | None: - """Run Claude CLI to generate summary for newsletter #{n}/{year}. Returns text or None.""" - url = NEWSLETTER_BASE_URL.format(n=n, year=year) - - try: - kb_prompt = KB_PROMPT_FILE.read_text() - except FileNotFoundError: - log.error("KB prompt file not found: %s", KB_PROMPT_FILE) - return None - - prompt = ( - f"Newsletter-ul Cercetașilor #{n}/{year} este disponibil la: {url}\n\n" - f"Urmează instrucțiunile de mai jos pentru a genera rezumatul:\n\n" - f"{kb_prompt}" - ) - - cmd = [ - CLAUDE_BIN, "-p", prompt, - "--model", "sonnet", - "--output-format", "json", - "--allowedTools", "WebFetch", - ] - - try: - system_prompt = build_system_prompt() - cmd += ["--system-prompt", system_prompt] - except FileNotFoundError: - pass - - try: - proc = subprocess.run( - cmd, - capture_output=True, - text=True, - timeout=CLAUDE_TIMEOUT, - env=_safe_env(), - cwd=PROJECT_ROOT, - ) - if proc.returncode != 0: - log.error("Claude CLI error (exit %d): %s", proc.returncode, proc.stderr[:300]) - return None - data = json.loads(proc.stdout) - return data.get("result", "").strip() or None - except subprocess.TimeoutExpired: - log.error("Claude CLI timed out for newsletter #%d", n) - return None - except (json.JSONDecodeError, Exception) as e: - log.error("Failed to generate newsletter summary: %s", e) - return None - - - -async def check_and_send(config, send_callback) -> None: - """Check for new newsletter; if found, generate summary and send via callback.""" - state = _read_state() - current_year = datetime.now(timezone.utc).year - - # New year → reset counter - if state.get("year", current_year) != current_year: - log.info("New year detected (%d → %d), resetting newsletter counter", state["year"], current_year) - state = {"last_sent": 0, "year": current_year} - - next_n = state["last_sent"] + 1 - log.info("Checking for Cercetasi newsletter #%d/%d...", next_n, current_year) - - if not await _newsletter_exists(next_n, current_year): - log.info("Newsletter #%d/%d not yet available", next_n, current_year) - return - - log.info("Newsletter #%d/%d found! Generating summary...", next_n, current_year) - - summary = await asyncio.to_thread(_generate_summary, next_n, current_year) - if not summary: - log.error("Failed to generate summary for newsletter #%d/%d", next_n, current_year) - return - - channel = config.get("newsletter_cercetasi.channel", "echo-core") - sent = False - try: - await send_callback(channel, summary) - sent = True - log.info("Newsletter #%d/%d summary sent to channel '%s'", next_n, current_year, channel) - except Exception as e: - log.error("Send failed for newsletter #%d/%d — will retry next check: %s", next_n, current_year, e) - - # Trimite și pe WhatsApp dacă e configurat - owner = config.get("whatsapp.owner", "") - if owner and sent: - owner_jid = f"{owner}@s.whatsapp.net" - bridge_url = config.get("whatsapp.bridge_url", "http://127.0.0.1:8098") - try: - async with httpx.AsyncClient() as client: - for chunk in [summary[i:i+4096] for i in range(0, len(summary), 4096)]: - await client.post(f"{bridge_url}/send", json={"to": owner_jid, "text": chunk}, timeout=15) - log.info("Newsletter #%d/%d summary sent to WhatsApp", next_n, current_year) - except Exception as e: - log.error("WhatsApp send failed for newsletter #%d/%d: %s", next_n, current_year, e) - - if sent: - state["last_sent"] = next_n - state["year"] = current_year - state["last_sent_at"] = datetime.now(timezone.utc).isoformat() - _write_state(state) diff --git a/tools/anaf-monitor/hashes.json b/tools/anaf-monitor/hashes.json index 996d3e1..f9b6b8a 100644 --- a/tools/anaf-monitor/hashes.json +++ b/tools/anaf-monitor/hashes.json @@ -1,14 +1,14 @@ { - "D100": "ce27f72bc3fd5e3241480fcda3a3e14572cfbed1b26e43896037bb265d82e4f5", + "D100": "db8fc40765fd2e3b5fc1f0f900e160e6c45f625f093cf1f3bc17ea3a40d88380", "D101": "f72fc1c29657ea11e0238806a28f6abccf5b00e45904e1e0c9385cc64491fcaf", "D300": "cb7b55b568ab893024884971eac0367fb6fe487c297e355d64258dae437f6ddd", "D394": "c4c4e62bda30032f12c17edf9a5087b6173a350ccb1fd750158978b3bd0acb7d", "D406": "ca6103448d663ab16fcaef0f29f8933ef526cbf5aad12c7ff5dbd61b22ca9fc6", "SIT_FIN_SEM_2025": "8164843431e6b703a38fbdedc7898ec6ae83559fe10f88663ba0b55f3091d5fe", "SIT_FIN_AN_2025": "accceef5b6585a3e901d83d23fc2e60f6562eac4a2ce00f943856232bed929d6", - "DESCARCARE_DECLARATII": "b2a9534d4f64b828abdb97459b92be27ba26a0d9ba1a0f947ef4a37c968ef293", + "DESCARCARE_DECLARATII": "0fb1535fe97aeadc7f415431238fae2cf7bc52d9e0c17ce3c4b4a12db92cd733", "D205": "d3c20a7ae70f4c18bbb7add42af035e3746d323b2e6df37a4e31ed625ddb86d9", - "D390": "4726938ed5858ec735caefd947a7d182b6dc64009478332c4feabdb36412a84e", + "D390": "31d0bf3f98eda3556039cc7e186bfcaf71bdb962459a2cf54f4d03d1d57053fc", "BILANT_2024": "fbb8d66c2e530d8798362992c6983e07e1250188228c758cb6da4cde4f955950", "BILANT_2025": "115531c0d6f20d84c38ebb6f621d57ecc151128ce115fe5b303160a9e2f4655a" } \ No newline at end of file diff --git a/tools/anaf-monitor/snapshots/D100.txt b/tools/anaf-monitor/snapshots/D100.txt index c701c1e..b8f755f 100644 --- a/tools/anaf-monitor/snapshots/D100.txt +++ b/tools/anaf-monitor/snapshots/D100.txt @@ -62,7 +62,7 @@ valabil începand cu 01/2024 - publicat în data de 09.02.2024 soft A actualizat în data de -17.06.2026 +29.06.2026 soft J* actualizat în data de 25.05.2026 diff --git a/tools/anaf-monitor/snapshots/D390.txt b/tools/anaf-monitor/snapshots/D390.txt index c92284b..7501fc1 100644 --- a/tools/anaf-monitor/snapshots/D390.txt +++ b/tools/anaf-monitor/snapshots/D390.txt @@ -16,6 +16,7 @@ publicat în data de soft A actualizat în data de 07.05.2024 +Formular web soft J* actualizat în data de 25.06.2025 diff --git a/tools/anaf-monitor/snapshots/DESCARCARE_DECLARATII.txt b/tools/anaf-monitor/snapshots/DESCARCARE_DECLARATII.txt index 9bb9663..a60bc41 100644 --- a/tools/anaf-monitor/snapshots/DESCARCARE_DECLARATII.txt +++ b/tools/anaf-monitor/snapshots/DESCARCARE_DECLARATII.txt @@ -397,6 +397,11 @@ Raportări contabile semestriale 2025 18.07.2025 Se transmit prin portalul e-guvernare.ro +Raportări contabile semestriale 2026 +- publicat în data de +08.07.2026 +Se transmit prin portalul +e-guvernare.ro Situaţii financiare anuale/Raportări anuale an 2022 - publicat în data de 20.01.2023 diff --git a/tools/anaf-monitor/versions.json b/tools/anaf-monitor/versions.json index eb4bc74..ca5407c 100644 --- a/tools/anaf-monitor/versions.json +++ b/tools/anaf-monitor/versions.json @@ -1,7 +1,7 @@ { "D100": { - "soft_a_url": "http://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/D100_710_XML_0126_170626.pdf", - "soft_a_date": "17.06.2026", + "soft_a_url": "http://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/D100_710_XML_0126_290626.pdf", + "soft_a_date": "29.06.2026", "soft_j_url": "http://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/D100_22052026.zip", "soft_j_date": "22.05.2026" },