stage-1: project bootstrap

Structure, config loader, personality/tools/memory from clawd, venv, 22 tests passing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
MoltBot Service
2026-02-13 10:20:55 +00:00
commit f2973aa76f
374 changed files with 59557 additions and 0 deletions

68
tools/lead-gen/README.md Normal file
View File

@@ -0,0 +1,68 @@
# Lead Generation Minimal - ROA
Sistem simplu pentru găsirea companiilor care au nevoie de soluții ERP/contabilitate.
## Cum funcționează
1. **find_leads.py** - Caută companii care angajează contabili/economiști
- Folosește Brave Search API
- Extrage nume de companii din rezultatele de pe eJobs, BestJobs, etc.
- Salvează în CSV pentru review manual
2. **templates/** - Template-uri email pentru outreach
- `template_general.md` - Template generic pentru cold email
## Usage
```bash
# Activează venv
cd ~/clawd && source venv/bin/activate
# Rulează căutarea
python tools/lead-gen/find_leads.py --limit 10
# Output: tools/lead-gen/output/leads.csv
```
## Workflow manual
1. **Rulează scriptul** (5 min/săptămână)
```bash
python tools/lead-gen/find_leads.py
```
2. **Review CSV** (5 min)
- Deschide `output/leads.csv`
- Marchează companiile interesante
- Completează CUI, email, website (căutare manuală Google)
3. **Trimite email** (per companie)
- Folosește template din `templates/`
- Personalizează cu numele companiei și jobul
## Status tracking
În CSV, câmpul `status`:
- `new` - proaspăt găsit
- `researched` - am completat datele
- `contacted` - am trimis email
- `replied` - au răspuns
- `converted` - client nou! 🎉
- `rejected` - nu sunt interesați
## TODO (îmbunătățiri viitoare)
- [ ] Auto-enrich cu CUI de pe ANAF
- [ ] Validare email (MX lookup)
- [ ] Template-uri per industrie
- [ ] Integrare cu Gmail pentru trimitere
- [ ] Dashboard cu statistici
## De ce funcționează
Companiile care **angajează contabili** au nevoie de:
- Software de contabilitate
- Poate nu sunt mulțumiți de soluția curentă
- Sau cresc și au nevoie de ceva mai robust
Targetarea lor e mult mai eficientă decât cold email random.

View File

@@ -0,0 +1,26 @@
NUME,RULAJ_ANUAL,COD_FISCAL,RAMURA,NOTE
XENOTI S.R.L.,83099.1,RO6743250,HOTEL,"VALENTINA ESTE EXPERT CONTABIL SI DIRECTOR LA XENOTI. SUNTEM CUNOSTINTE VECHI, LA FEL CA SI CU ALEX STEFAN. IN VIRTUTEA RELATIEI VECHI DE PE ALTE FIRME, A VRUT PROGRAMUL ROA SI LA XENOTI. VALENTINA ARE SI ALTE FIRME. FACTUREZ TOTUL PE XENOTI, INCLUSIV PROIECTE DE MIGRARE ALE UNOR FIRME ALE VALENTINEI PE ROA SI DE ACEEA ARE CEA MAI MARE VALOARE. INTRE TIMP AM 3 FACTURI NEACHITATE DE LA XENOTI. NU A AVUT VANZARI BUNE IN ULTIMUL SEZON ESTIVAL"
ROMPETROL ENERGY SA,57928.23,RO29923675,ENERGIE TERMICA,"FOSTA UTMIDIA NAVODARI, CLIENT VECHI, CLIENT IDEAL, FACTURI PUTINE, VALOARE MARE, CLIENTI PUTINI DAR MARI, LE-AM FACUT MIGRARE ROA DE LA UTMIDIA NAVODARI. AU SPUS CA TREC LA PROGRAMELE INTERNATIONALE FOLOSITE DE ROMPETROL SA, DAR INCA NU AU TRECUT DE CATIVA ANI"
ADMINISTRATIA CANALELOR NAVIGABILE,39907.84,RO11087755,COMPANIE NATIONALA,"ACUM 15 ANI AU AVUT PROGRAME CONTABILE VECHI SI DE FACTURARE SI AU AVUT NEVOIE DE ALTE PROGRAME. CLIENTI VECHI, STABILI. ACUM NECESITA MENTENANTA PUTINA. A FOST MAI GREU SA LE CRESC PRETURILE. SUNT RETICENTI. CLIENT IDEAL"
VENDING MASTER SRL,39270,RO33137200,"DISTRIBUTIE CAFEA, AUTOMATE CAFEA","AVIS DATABASE ACCOUNTING ESTE CONTABILUL LUI, ALEX STEFAN, EXPERTUL CONTABIL DE LA AVIS DATABASE ESTE UN FOST COLEG SI PRIN EL AM LUAT FIRMA VENDING CLIENT, DE CAND ERA MAI MICA CA DIMENSIUNE. I-AM CRESCUT TARIFUL IN DECURS DE MAI MULTI ANI PENTRU CA I-A CRESCUT ACTIVITATEA SI SUPORTUL TEHNIC"
VADECO SRL,34012.67,RO14707452,SERVICII TRANSPORT,"CLIENT IDEAL, SERVICII, ARE CLIENTI FOARTE PUTINI, DAR DE VALOARE MARE, 4 PERSOANE LA FACTURARE, AGENTI, CONTABIL SI DIRECTOR ECONOMIC CU CARE LUCREZ"
EUROPEAN METAL SERVICES SA,32584.67,RO12629765,SERVICII FIER VECHI,"CLIENT IDEAL, SERVICII, ARE CLIENTI FOARTE PUTINI, DAR DE VALOARE MARE, 1 CONTABIL SI DIRECTOR ECONOMIC CU CARE LUCREZ. ARE SI ALTI ANGAJATI BINEINTELES"
SOUTH EAST TRUCK SERVICES S.R.L.,31136.42,RO43525632,SERVICE AUTO,"CLIENT IDEAL. CLIENTI PUTINI (POLARIS M HOLDING) DAR MARI. UN RECEPTIONER/GESTIONAR, MECANICI SI PATRONUL CARE ESTE INGINER AUTO"
MIDIA GREEN ENERGY SA,19269.2,RO14325363,ENERGIE FOTOVOLTAICA,CLIENT FOARTE VECHI. S-A DESPRINS DIN UTMIDIA NAVODARI CARE A FOST CONVERTITA IN ROMPETROL ENERGY SA. CLIENT IDEAL. LUCREZ DOAR CU DIRECTORUL ECONOMIC CAND ARE NEVOIE DE ASISTENTA LA DECLARATII SAU OPERATII IMOBILIZARI
INTREPRINDEREA METALURGICA PENTRU AERONAUTICA META,18102.62,RO16036329,PRODUCTIE,"CLIENT FOARTE VECHI. IDEAL. CA SI EDUARD PUBLISHING A AVUT NEVOI CONTABILE SPORITE PENTRU URMARIREA PRODUCTIEI, COSTURILOR SI ANALIZA CHELTUIELILOR, BUGETELOR"
ARGENTA SRL,14482.07,RO3959705,CONSTRUCTII,"CLIENT IDEAL. CLIENTI PUTINI, VALOARE MARE. ARE UN PROGRAM SPECIAL DE URMARIRE PROIECTE/DEVIZE/OFERTE COMPARATIE COSTURI FATA DE OFERTA, PENTRU ANALIZA RANDAMENT LUCRARI CONSTRUCTIE"
ETALON DISTRIBUTION S R L,14380,RO42158724,DISTRIBUTIE PRESA,CLIENT VECHI PROVENIT DIN ALT CLIENT - PRIN TRANSFER ACTIVE. VALENTINA ESTE DIRECTOR ECONOMIC SI LA ETALON. AM CONTINUAT ACTIVITATEA CU ETALON PRIN VALENTINA
A.B.C. VAL,13487.42,RO3853010,CONSTRUCTII,"A INTRAT IN FALIMENT. NU MAI ESTE CLIENT. CA SI ARGENTA SA, AVEA NEVOI DE URMARIRE PROIECTE, LUCRARI, DEVIZ, OFERTA - AM PROGRAMUL RESPECTIV"
EDUARD PUBLISHING,12084.4,RO 25629015,"EDITURA CARTE, PRODUCTIE CARTE","ACUM O DUCE MAI GREU. LA INCEPUTUL RELATIEI, ACUM 15 ANI AVEA ACTIVITATE MAI MARE SI AVEA NEVOI DE URMARIRE PRODUCTIE DE CARTE"
AUTOMOTIVE SERVICE SRL,10165,RO18448482,SERVICE AUTO,"CLIENT IDEAL. UN PATRON, UN INGINER, PLUS MECANICI. PLATESTE PROMPT. AM PUTINA ACTIVITATE CU EL CA SUPORT TEHNIC. DE VAZUT CE CIFRA DE AFACERI ARE"
CLEVER MOTORS SRL,10165,RO44234984,SERVICE AUTO,"NU PLATESTE LA TIMP, RESTANTE 3-4 LUNI. ESTE UN SERVICE AUTO CARE CRED CA NU ISI PRIMESTE BANII LA TIMP DE LA ASIGURATORI, SAU ARE COMENZI PUTINE. DE VAZUT CE CIFRA DE AFACERI ARE"
ALMMA CONTRACTORS GROUP S.R.L.,9223.46,RO37165512,CONSTRUCTII,A DAT FALIMENT. NU MAI ESTE CLIENT. ERA IN GRUPUL A.B.C VAL
ROMCONSTRUCT GLASS S.R.L.,8615,RO24498302,PRODUCTIE,"PRODUCTIE GEAMURI, MONTAJ. CLIENT IDEAL DAR IN ULTIMII ANI SI-A REDUS ACTIVITATEA. AVEA NEVOIE DE PROGRAM DE PRODUCTIE, CONSUM, FACTURARE. AM FACUT PROGRAMUL DAR S-A DOVEDIT FOARTE COMPLEX FATA DE CALCULELE LOR DIN EXCEL. FOLOSESC DOAR FACTURAREA DE SERVICII, IN LOC DE PRODUCTIE, CONSUM SI FACTURARE PRODUCTIE. PROBLEMA CEA MAI MARE ERA SI ESTE GESTIUNEA STOCURILOR, DEVIZELE CARE SE FAC IN EXCEL, DAR NU SE VAD IN SOFT. LE LUA PREA MULT TIMP SA FOLOSEASCA PROGRAMELE CONSTRUITE SPECIAL PENTRU PRODUCTIE, DESCARCARE PRODUCTIE SI NU LE-AU FOLOSIT."
SIGMA L.C. SERVICE,7274.66,RO21773785,SERVICE AUTO,ARE RESTANTE 3-6 LUNI. E OK CA NIVEL DE CERERI
WERT SRL,6000,RO7435479,PRODUCTIE,ESTE CLIENTUL CARAPETRU CONTAB SI FOLOSESTE PROGRAMELE ROA PENTRU CONTABILITATE PRIMARA. NU EMITE FACTURI DIN ROA.
DIRECTIA DE PAZA A JUDETULUI CONSTANTA,4314,5639774,SERVICII,A RAMAS DOAR CU PROGRAMUL DE GESTIUNE OBIECTE DE INVENTAR. NU MAI ARE ACTIVITATE
DRAFT CONSTRUCT SRL,3600,RO16322932,CONSTRUCTII,A INTRAT IN INSOLVENTA. CLIENT CU PROBLEME FINANCIARE. ESTE CLIENTUL CARAPETRU CONTAB SI FOLOSESTE PROGRAMELE ROA PENTRU CONTABILITATE PRIMARA. NU EMITE FACTURI DIN ROA.
DRAFT DINAMIC CONSTRUCT S.R.L.,3600,RO45269115,CONSTRUCTII,A INTRAT IN INSOLVENTA. CLIENT CU PROBLEME FINANCIARE. ESTE CLIENTUL CARAPETRU CONTAB SI FOLOSESTE PROGRAMELE ROA PENTRU CONTABILITATE PRIMARA. NU EMITE FACTURI DIN ROA.
BIG TRADE S.A.,2958.38,RO7436261,SERVICII,"NU MAI ESTE CLIENTUL MEU. PLATEA PENTRU UN GRUP DE FIRME MICI, CARE AU TRECUT PE SAGA PENTRU CA NU AVEAU ACTIVITATE"
AVIS DATABASE ACCOUNTING S.R.L.,1776.82,40023585,CONTABILITATE,ALEX STEFAN DE LA AVIS DATABASE ACCOUNTING A FOST COLEG CU MINE. SI-A FACUT FIRMA DE CONTABILITATE. VENDING MASTER ESTE CLIENTUL LUI. PRIN ALEX STEFAN L-AM OBTINUT ACUM MULTI ANI.
CARAPETRU CONTAB SRL,300,35295575,CONTABILITATE,"SILVIA DE LA CARAPETRU CONTAB ESTE CONTABILA MEA SI FOLOSESTE PROGRAMELE ROA PENTRU FIRMELE EI. WERT, DRAFT DINAMIC, DRAFT CONSTRUCT, SUNT CLIENTII EI"
1 NUME RULAJ_ANUAL COD_FISCAL RAMURA NOTE
2 XENOTI S.R.L. 83099.1 RO6743250 HOTEL VALENTINA ESTE EXPERT CONTABIL SI DIRECTOR LA XENOTI. SUNTEM CUNOSTINTE VECHI, LA FEL CA SI CU ALEX STEFAN. IN VIRTUTEA RELATIEI VECHI DE PE ALTE FIRME, A VRUT PROGRAMUL ROA SI LA XENOTI. VALENTINA ARE SI ALTE FIRME. FACTUREZ TOTUL PE XENOTI, INCLUSIV PROIECTE DE MIGRARE ALE UNOR FIRME ALE VALENTINEI PE ROA SI DE ACEEA ARE CEA MAI MARE VALOARE. INTRE TIMP AM 3 FACTURI NEACHITATE DE LA XENOTI. NU A AVUT VANZARI BUNE IN ULTIMUL SEZON ESTIVAL
3 ROMPETROL ENERGY SA 57928.23 RO29923675 ENERGIE TERMICA FOSTA UTMIDIA NAVODARI, CLIENT VECHI, CLIENT IDEAL, FACTURI PUTINE, VALOARE MARE, CLIENTI PUTINI DAR MARI, LE-AM FACUT MIGRARE ROA DE LA UTMIDIA NAVODARI. AU SPUS CA TREC LA PROGRAMELE INTERNATIONALE FOLOSITE DE ROMPETROL SA, DAR INCA NU AU TRECUT DE CATIVA ANI
4 ADMINISTRATIA CANALELOR NAVIGABILE 39907.84 RO11087755 COMPANIE NATIONALA ACUM 15 ANI AU AVUT PROGRAME CONTABILE VECHI SI DE FACTURARE SI AU AVUT NEVOIE DE ALTE PROGRAME. CLIENTI VECHI, STABILI. ACUM NECESITA MENTENANTA PUTINA. A FOST MAI GREU SA LE CRESC PRETURILE. SUNT RETICENTI. CLIENT IDEAL
5 VENDING MASTER SRL 39270 RO33137200 DISTRIBUTIE CAFEA, AUTOMATE CAFEA AVIS DATABASE ACCOUNTING ESTE CONTABILUL LUI, ALEX STEFAN, EXPERTUL CONTABIL DE LA AVIS DATABASE ESTE UN FOST COLEG SI PRIN EL AM LUAT FIRMA VENDING CLIENT, DE CAND ERA MAI MICA CA DIMENSIUNE. I-AM CRESCUT TARIFUL IN DECURS DE MAI MULTI ANI PENTRU CA I-A CRESCUT ACTIVITATEA SI SUPORTUL TEHNIC
6 VADECO SRL 34012.67 RO14707452 SERVICII TRANSPORT CLIENT IDEAL, SERVICII, ARE CLIENTI FOARTE PUTINI, DAR DE VALOARE MARE, 4 PERSOANE LA FACTURARE, AGENTI, CONTABIL SI DIRECTOR ECONOMIC CU CARE LUCREZ
7 EUROPEAN METAL SERVICES SA 32584.67 RO12629765 SERVICII FIER VECHI CLIENT IDEAL, SERVICII, ARE CLIENTI FOARTE PUTINI, DAR DE VALOARE MARE, 1 CONTABIL SI DIRECTOR ECONOMIC CU CARE LUCREZ. ARE SI ALTI ANGAJATI BINEINTELES
8 SOUTH EAST TRUCK SERVICES S.R.L. 31136.42 RO43525632 SERVICE AUTO CLIENT IDEAL. CLIENTI PUTINI (POLARIS M HOLDING) DAR MARI. UN RECEPTIONER/GESTIONAR, MECANICI SI PATRONUL CARE ESTE INGINER AUTO
9 MIDIA GREEN ENERGY SA 19269.2 RO14325363 ENERGIE FOTOVOLTAICA CLIENT FOARTE VECHI. S-A DESPRINS DIN UTMIDIA NAVODARI CARE A FOST CONVERTITA IN ROMPETROL ENERGY SA. CLIENT IDEAL. LUCREZ DOAR CU DIRECTORUL ECONOMIC CAND ARE NEVOIE DE ASISTENTA LA DECLARATII SAU OPERATII IMOBILIZARI
10 INTREPRINDEREA METALURGICA PENTRU AERONAUTICA META 18102.62 RO16036329 PRODUCTIE CLIENT FOARTE VECHI. IDEAL. CA SI EDUARD PUBLISHING A AVUT NEVOI CONTABILE SPORITE PENTRU URMARIREA PRODUCTIEI, COSTURILOR SI ANALIZA CHELTUIELILOR, BUGETELOR
11 ARGENTA SRL 14482.07 RO3959705 CONSTRUCTII CLIENT IDEAL. CLIENTI PUTINI, VALOARE MARE. ARE UN PROGRAM SPECIAL DE URMARIRE PROIECTE/DEVIZE/OFERTE COMPARATIE COSTURI FATA DE OFERTA, PENTRU ANALIZA RANDAMENT LUCRARI CONSTRUCTIE
12 ETALON DISTRIBUTION S R L 14380 RO42158724 DISTRIBUTIE PRESA CLIENT VECHI PROVENIT DIN ALT CLIENT - PRIN TRANSFER ACTIVE. VALENTINA ESTE DIRECTOR ECONOMIC SI LA ETALON. AM CONTINUAT ACTIVITATEA CU ETALON PRIN VALENTINA
13 A.B.C. VAL 13487.42 RO3853010 CONSTRUCTII A INTRAT IN FALIMENT. NU MAI ESTE CLIENT. CA SI ARGENTA SA, AVEA NEVOI DE URMARIRE PROIECTE, LUCRARI, DEVIZ, OFERTA - AM PROGRAMUL RESPECTIV
14 EDUARD PUBLISHING 12084.4 RO 25629015 EDITURA CARTE, PRODUCTIE CARTE ACUM O DUCE MAI GREU. LA INCEPUTUL RELATIEI, ACUM 15 ANI AVEA ACTIVITATE MAI MARE SI AVEA NEVOI DE URMARIRE PRODUCTIE DE CARTE
15 AUTOMOTIVE SERVICE SRL 10165 RO18448482 SERVICE AUTO CLIENT IDEAL. UN PATRON, UN INGINER, PLUS MECANICI. PLATESTE PROMPT. AM PUTINA ACTIVITATE CU EL CA SUPORT TEHNIC. DE VAZUT CE CIFRA DE AFACERI ARE
16 CLEVER MOTORS SRL 10165 RO44234984 SERVICE AUTO NU PLATESTE LA TIMP, RESTANTE 3-4 LUNI. ESTE UN SERVICE AUTO CARE CRED CA NU ISI PRIMESTE BANII LA TIMP DE LA ASIGURATORI, SAU ARE COMENZI PUTINE. DE VAZUT CE CIFRA DE AFACERI ARE
17 ALMMA CONTRACTORS GROUP S.R.L. 9223.46 RO37165512 CONSTRUCTII A DAT FALIMENT. NU MAI ESTE CLIENT. ERA IN GRUPUL A.B.C VAL
18 ROMCONSTRUCT GLASS S.R.L. 8615 RO24498302 PRODUCTIE PRODUCTIE GEAMURI, MONTAJ. CLIENT IDEAL DAR IN ULTIMII ANI SI-A REDUS ACTIVITATEA. AVEA NEVOIE DE PROGRAM DE PRODUCTIE, CONSUM, FACTURARE. AM FACUT PROGRAMUL DAR S-A DOVEDIT FOARTE COMPLEX FATA DE CALCULELE LOR DIN EXCEL. FOLOSESC DOAR FACTURAREA DE SERVICII, IN LOC DE PRODUCTIE, CONSUM SI FACTURARE PRODUCTIE. PROBLEMA CEA MAI MARE ERA SI ESTE GESTIUNEA STOCURILOR, DEVIZELE CARE SE FAC IN EXCEL, DAR NU SE VAD IN SOFT. LE LUA PREA MULT TIMP SA FOLOSEASCA PROGRAMELE CONSTRUITE SPECIAL PENTRU PRODUCTIE, DESCARCARE PRODUCTIE SI NU LE-AU FOLOSIT.
19 SIGMA L.C. SERVICE 7274.66 RO21773785 SERVICE AUTO ARE RESTANTE 3-6 LUNI. E OK CA NIVEL DE CERERI
20 WERT SRL 6000 RO7435479 PRODUCTIE ESTE CLIENTUL CARAPETRU CONTAB SI FOLOSESTE PROGRAMELE ROA PENTRU CONTABILITATE PRIMARA. NU EMITE FACTURI DIN ROA.
21 DIRECTIA DE PAZA A JUDETULUI CONSTANTA 4314 5639774 SERVICII A RAMAS DOAR CU PROGRAMUL DE GESTIUNE OBIECTE DE INVENTAR. NU MAI ARE ACTIVITATE
22 DRAFT CONSTRUCT SRL 3600 RO16322932 CONSTRUCTII A INTRAT IN INSOLVENTA. CLIENT CU PROBLEME FINANCIARE. ESTE CLIENTUL CARAPETRU CONTAB SI FOLOSESTE PROGRAMELE ROA PENTRU CONTABILITATE PRIMARA. NU EMITE FACTURI DIN ROA.
23 DRAFT DINAMIC CONSTRUCT S.R.L. 3600 RO45269115 CONSTRUCTII A INTRAT IN INSOLVENTA. CLIENT CU PROBLEME FINANCIARE. ESTE CLIENTUL CARAPETRU CONTAB SI FOLOSESTE PROGRAMELE ROA PENTRU CONTABILITATE PRIMARA. NU EMITE FACTURI DIN ROA.
24 BIG TRADE S.A. 2958.38 RO7436261 SERVICII NU MAI ESTE CLIENTUL MEU. PLATEA PENTRU UN GRUP DE FIRME MICI, CARE AU TRECUT PE SAGA PENTRU CA NU AVEAU ACTIVITATE
25 AVIS DATABASE ACCOUNTING S.R.L. 1776.82 40023585 CONTABILITATE ALEX STEFAN DE LA AVIS DATABASE ACCOUNTING A FOST COLEG CU MINE. SI-A FACUT FIRMA DE CONTABILITATE. VENDING MASTER ESTE CLIENTUL LUI. PRIN ALEX STEFAN L-AM OBTINUT ACUM MULTI ANI.
26 CARAPETRU CONTAB SRL 300 35295575 CONTABILITATE SILVIA DE LA CARAPETRU CONTAB ESTE CONTABILA MEA SI FOLOSESTE PROGRAMELE ROA PENTRU FIRMELE EI. WERT, DRAFT DINAMIC, DRAFT CONSTRUCT, SUNT CLIENTII EI

View File

@@ -0,0 +1,229 @@
#!/usr/bin/env python3
"""
Lead Generator Minimal - Găsește companii care au nevoie de soluții ERP/contabilitate.
Folosește Brave Search API pentru a găsi companii care angajează contabili/economiști.
Output: leads.csv cu companii pentru review manual
Usage:
python find_leads.py [--limit N]
Necesită: BRAVE_API_KEY în environment sau ~/.clawdbot/clawdbot.json
"""
import os
import re
import csv
import json
import argparse
from datetime import datetime
from pathlib import Path
import requests
OUTPUT_DIR = Path(__file__).parent / "output"
OUTPUT_DIR.mkdir(exist_ok=True)
def get_brave_api_key():
"""Get Brave API key from clawdbot config."""
config_path = Path.home() / ".clawdbot" / "clawdbot.json"
if config_path.exists():
with open(config_path) as f:
config = json.load(f)
# Try tools.web.search.apiKey (clawdbot format)
api_key = config.get("tools", {}).get("web", {}).get("search", {}).get("apiKey", "")
if api_key:
return api_key
# Fallback to brave.apiKey
return config.get("brave", {}).get("apiKey", "")
return os.getenv("BRAVE_API_KEY", "")
def search_brave(query, count=10):
"""Search using Brave Search API."""
api_key = get_brave_api_key()
if not api_key:
print("[!] Nu am găsit Brave API key")
return []
url = "https://api.search.brave.com/res/v1/web/search"
headers = {
"X-Subscription-Token": api_key,
"Accept": "application/json"
}
params = {
"q": query,
"count": count
}
try:
resp = requests.get(url, headers=headers, params=params, timeout=15)
data = resp.json()
return data.get("web", {}).get("results", [])
except Exception as e:
print(f"[!] Brave search error: {e}")
return []
def extract_companies_from_results(results):
"""Extract company names from search results."""
companies = []
# Patterns for Romanian companies
patterns = [
r'([A-Z][A-Z\s\-\.&]+(?:S\.R\.L\.|SRL|S\.A\.|SA|S\.C\.))', # COMPANY S.R.L.
r'(SC\s+[A-Z][A-Z\s\-\.&]+(?:S\.R\.L\.|SRL|S\.A\.|SA))', # SC COMPANY SRL
r'([A-Z][a-zA-Z\s\-\.&]{2,30}(?:S\.R\.L\.|SRL|S\.A\.|SA))', # Mixed case
]
for result in results:
text = f"{result.get('title', '')} {result.get('description', '')}"
for pattern in patterns:
matches = re.findall(pattern, text)
for match in matches:
company = match.strip()
# Clean up
company = re.sub(r'\s+', ' ', company)
if len(company) > 5 and len(company) < 80:
companies.append({
"company": company,
"source_url": result.get("url", ""),
"context": text[:200]
})
return companies
def clean_company_name(name):
"""Clean company name from prefix garbage."""
# Remove common prefixes that get caught by regex
prefixes_to_remove = [
r'^(?:Senior|Junior|Contabil|Economist|Director\s+Economic|Expert|Specialist)\s+',
r'^(?:RON|EUR|USD)\s+',
r'^(?:Bucuresti|Cluj|Iasi|Brasov|Constanta)\s+',
r'^\d+[\s\-]+',
]
result = name.strip()
for pattern in prefixes_to_remove:
result = re.sub(pattern, '', result, flags=re.IGNORECASE)
# Clean trailing garbage
result = re.sub(r'\s*-\s*$', '', result)
result = re.sub(r'\s+', ' ', result).strip()
return result
def deduplicate(leads):
"""Elimină duplicate după numele companiei."""
seen = set()
unique = []
for lead in leads:
# Clean company name
lead["company"] = clean_company_name(lead["company"])
# Normalize for comparison
company_norm = re.sub(r'[^a-z0-9]', '', lead["company"].lower())
# Skip too short or invalid
if len(company_norm) < 5:
continue
# Skip obvious non-companies
skip_patterns = [
r'^emea\s',
r'^staff\s',
r'accountant',
r'^bestjobs',
r'^ejobs',
r'^hipo',
]
if any(re.search(p, lead["company"], re.IGNORECASE) for p in skip_patterns):
continue
if company_norm not in seen:
seen.add(company_norm)
unique.append(lead)
return unique
def enrich_leads(leads):
"""Adaugă câmpuri pentru tracking."""
for lead in leads:
lead["found_date"] = datetime.now().isoformat()[:10]
lead["cui"] = ""
lead["email"] = ""
lead["website"] = ""
lead["phone"] = ""
lead["status"] = "new" # new, researched, contacted, replied, converted, rejected
lead["notes"] = ""
lead["industry"] = ""
return leads
def save_leads(leads, filename="leads.csv"):
"""Salvează leads în CSV pentru review."""
output_file = OUTPUT_DIR / filename
fieldnames = ["company", "industry", "source_url", "found_date",
"cui", "email", "website", "phone", "status", "notes"]
# Remove context from output (used only for extraction)
for lead in leads:
lead.pop("context", None)
with open(output_file, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames, extrasaction='ignore')
writer.writeheader()
writer.writerows(leads)
return output_file
def main():
parser = argparse.ArgumentParser(description="Lead Generator Minimal")
parser.add_argument("--limit", type=int, default=10, help="Results per search query")
args = parser.parse_args()
print("🔍 Căutare leads via Brave Search...")
# Search queries - companii care angajează contabili
queries = [
'site:ejobs.ro contabil angajare 2026',
'site:ejobs.ro economist angajare',
'site:bestjobs.eu contabil Romania',
'site:hipo.ro contabil angajare',
'"angajam contabil" Romania firma',
'"cautam economist" Romania SRL',
]
all_leads = []
for query in queries:
print(f"{query[:50]}...")
results = search_brave(query, count=args.limit)
companies = extract_companies_from_results(results)
all_leads.extend(companies)
print(f" Găsite: {len(companies)} companii")
# Deduplică
unique_leads = deduplicate(all_leads)
print(f"\n📊 Total: {len(all_leads)}{len(unique_leads)} unice")
# Îmbogățește
enriched = enrich_leads(unique_leads)
# Salvează
output_file = save_leads(enriched)
print(f"\n✅ Salvat: {output_file}")
# Afișează lista
print(f"\n📋 {len(enriched)} companii găsite:")
for i, lead in enumerate(enriched, 1):
print(f" {i}. {lead['company']}")
print(f"\n💡 Următorii pași:")
print(f" 1. Deschide {output_file}")
print(f" 2. Completează CUI, email, website pentru cele interesante")
print(f" 3. Marchează status: researched → contacted → replied")
return enriched
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,20 @@
company,industry,source_url,found_date,cui,email,website,phone,status,notes
TAXASIST ADVICES S.R.L.,,https://www.ejobs.ro/en/jobs/contabil,2026-02-04,,,,,new,
FINANCE CONSULTING S.R.L.,,https://www.ejobs.ro/en/jobs/contabil-junior,2026-02-04,,,,,new,
CABINET EXPERT CONTABIL DOCHIAN SI ASOCIATII SRL,,https://www.ejobs.ro/en/jobs/contabil-junior,2026-02-04,,,,,new,
TPA Transilvania Contax S.R.L.,,https://www.ejobs.ro/en/jobs/contabil-junior,2026-02-04,,,,,new,
DOCHIAN SI ASOCIATII SRL,,https://www.ejobs.ro/en/jobs/contabil-junior,2026-02-04,,,,,new,
SC COMGABY MOLN SRL,,https://www.ejobs.ro/en/jobs/cluj-napoca/contabil-junior,2026-02-04,,,,,new,
MOL ROMANIA Petroleum Products SRL,,https://www.ejobs.ro/en/jobs/cluj-napoca/contabil-junior,2026-02-04,,,,,new,
TRAIN TO PERFORM SRL,,https://www.ejobs.ro/en/jobs/iasi/contabil,2026-02-04,,,,,new,
SC PANIFCOM SRL,,https://www.ejobs.ro/en/jobs/iasi/contabil,2026-02-04,,,,,new,
SWISS MANAGEMENT COMPANY SRL,,https://www.ejobs.ro/en/jobs/brasov/contabil,2026-02-04,,,,,new,
SC CROCO SRL,,https://www.ejobs.ro/en/jobs/brasov/contabil,2026-02-04,,,,,new,
OV UNITY PLACE S.R.L.,,https://www.ejobs.ro/en/jobs/brasov/contabil,2026-02-04,,,,,new,
EREN CONS SRL,,https://www.ejobs.ro/en/jobs/brasov/contabil,2026-02-04,,,,,new,
ADECCO RESURSE UMANE SRL,,https://www.ejobs.ro/en/jobs/financiar-contabilitate/no-experience,2026-02-04,,,,,new,
Global Services Bucharest SRL,,https://www.ejobs.ro/en/jobs/financiar-contabilitate/no-experience,2026-02-04,,,,,new,
TRAVEL BRANDS S.A.,,https://www.ejobs.ro/en/jobs/bucuresti/contabil,2026-02-04,,,,,new,
B BUSINESS GOLD S.R.L.,,https://www.ejobs.ro/en/jobs/financiar-contabilitate,2026-02-04,,,,,new,
Contab SRL,,https://www.ejobs.ro/en/jobs/financiar-contabilitate,2026-02-04,,,,,new,
MASPEX ROMANIA SRL,,https://www.bestjobs.eu/en/jobs/contabil+fara+experienta,2026-02-04,,,,,new,
1 company industry source_url found_date cui email website phone status notes
2 TAXASIST ADVICES S.R.L. https://www.ejobs.ro/en/jobs/contabil 2026-02-04 new
3 FINANCE CONSULTING S.R.L. https://www.ejobs.ro/en/jobs/contabil-junior 2026-02-04 new
4 CABINET EXPERT CONTABIL DOCHIAN SI ASOCIATII SRL https://www.ejobs.ro/en/jobs/contabil-junior 2026-02-04 new
5 TPA Transilvania Contax S.R.L. https://www.ejobs.ro/en/jobs/contabil-junior 2026-02-04 new
6 DOCHIAN SI ASOCIATII SRL https://www.ejobs.ro/en/jobs/contabil-junior 2026-02-04 new
7 SC COMGABY MOLN SRL https://www.ejobs.ro/en/jobs/cluj-napoca/contabil-junior 2026-02-04 new
8 MOL ROMANIA Petroleum Products SRL https://www.ejobs.ro/en/jobs/cluj-napoca/contabil-junior 2026-02-04 new
9 TRAIN TO PERFORM SRL https://www.ejobs.ro/en/jobs/iasi/contabil 2026-02-04 new
10 SC PANIFCOM SRL https://www.ejobs.ro/en/jobs/iasi/contabil 2026-02-04 new
11 SWISS MANAGEMENT COMPANY SRL https://www.ejobs.ro/en/jobs/brasov/contabil 2026-02-04 new
12 SC CROCO SRL https://www.ejobs.ro/en/jobs/brasov/contabil 2026-02-04 new
13 OV UNITY PLACE S.R.L. https://www.ejobs.ro/en/jobs/brasov/contabil 2026-02-04 new
14 EREN CONS SRL https://www.ejobs.ro/en/jobs/brasov/contabil 2026-02-04 new
15 ADECCO RESURSE UMANE SRL https://www.ejobs.ro/en/jobs/financiar-contabilitate/no-experience 2026-02-04 new
16 Global Services Bucharest SRL https://www.ejobs.ro/en/jobs/financiar-contabilitate/no-experience 2026-02-04 new
17 TRAVEL BRANDS S.A. https://www.ejobs.ro/en/jobs/bucuresti/contabil 2026-02-04 new
18 B BUSINESS GOLD S.R.L. https://www.ejobs.ro/en/jobs/financiar-contabilitate 2026-02-04 new
19 Contab SRL https://www.ejobs.ro/en/jobs/financiar-contabilitate 2026-02-04 new
20 MASPEX ROMANIA SRL https://www.bestjobs.eu/en/jobs/contabil+fara+experienta 2026-02-04 new

View File

@@ -0,0 +1,30 @@
# Template Email - General
**Subiect:** Soluție software contabilitate - {company}
---
Bună ziua,
Am văzut că {company} caută {job_title}.
De peste 25 de ani dezvoltăm **ROA** - un sistem ERP complet pentru contabilitate și gestiune, folosit de companii din România care au nevoie de:
- ✅ Contabilitate completă (generală + analitică)
- ✅ Gestiune stocuri și facturare
- ✅ Rapoarte ANAF automate (D300, D394, D390, e-Factura)
- ✅ Interfață web pentru acces de oriunde
**De ce ROA:**
- Soluție românească, adaptată legislației locale
- Bază de date Oracle - performanță și securitate
- Suport tehnic direct de la dezvoltator
- Prețuri competitive vs. soluțiile multinaționale
Dacă vă interesează o demonstrație gratuită de 30 minute, răspundeți la acest email sau sunați la {phone}.
Cu respect,
{sender_name}
{sender_company}
{sender_phone}
{sender_email}