Home Blog Projects Resume Contact
Personal Product

TechEco DZ

Bilingual (EN/FR) public data platform mapping 1,556 verified tech employers across Algeria's three largest tech hubs (Algiers, Béjaïa, Oran). Two-stage evidence-grounded hiring-potential scoring, a self-growing OWL taxonomy, an optional Clerk-authenticated community layer, and 4,400+ static pages with zero broken links.

Role Solo developer
Timeline Jul 2026 – Jul 2026
Stack
AstroReactPythonLangChainOwlready2LeafletClerk
TechEco DZ project thumbnail
01

One map, two live signals

  • Interactive Leaflet map colors every marker by whichever metric is active, popularity or tech-hiring potential.
  • Legend and marker colors switch live, no page reload, across 1,556 companies in 3 cities.
  • Filterable by sector, subsector, and distance from any point.
One map, two live signals
02

Capped, not claimed

  • A LangChain agent scores 16 controlled tech specialties per company from an initial LLM pass.
  • An independent calibration stage re-checks every score against stored evidence and hard-caps unsupported claims at 49/100.
  • A bounded community-review signal now also feeds calibration, but only once a separate LLM pass confirms the reviewer's own comment actually supports the tagged role.
Capped, not claimed
03

Every formula, in the open

  • A public methodology page renders the exact equation behind every one of the 16 versioned metrics using KaTeX.
  • Evidence-level score caps (49/59/74/100/100) are shown as real typeset tables, not prose.
  • Nothing about the scoring is a black box, every number links to the formula that produced it.
Every formula, in the open
04

Any city, head to head

  • 3 canonical city-vs-city SEO pages (Algiers, Béjaïa, Oran), one per unique pair.
  • Head-to-head stat rows (verified companies, landmarks, hiring signal, digital presence) computed entirely from data the pipeline already produces.
  • No new data collection required, pure derived-page SEO surface area.
Any city, head to head
05

Tags, organized like the ontology

  • Reworked a flat tag list into a 3-level hierarchy, 4 categories → subgroups → 23 tags.
  • Re-tagged the entire 1,556-company base against the new taxonomy with richer LLM context.
  • Redesigned the tag-browsing UI per city to mirror the real ontology instead of sorting by raw count.
Tags, organized like the ontology
06

Built to last, not to patch

  • Fully static Astro 7 output, 4,400+ bilingual pages, 0 broken internal links, validated on every build.
  • Every page ships in English and French with hreflang-linked canonical URLs.
  • No runtime database dependency, the frontend only ever reads one generated JSON snapshot.
Built to last, not to patch
07

Nothing ships ungrounded

  • Every company moves through the same six-stage pipeline before a score goes public, discover, verify, crawl evidence, assess (LLM), calibrate, publish.
  • A self-growing OWL ontology (Owlready2) lets the LLM propose new subsectors, persisted as real subclasses, grown from a handful of seeds to 97 subsectors under 14 fixed sectors.
  • A claim only reaches publication if the calibration stage can still support it.
Nothing ships ungrounded
08

One static site, every city, both languages

  • Astro 7 static output routed per city and per language, each combination getting its own canonical URL.
  • React islands only where real interaction is needed, the map and the job-matcher wizard.
  • An optional Clerk-authenticated layer (votes, wishlist, applied tracker, a personalized "For You" page) sits on top, backed by a separate Cloudflare Workers + D1 service that only ever mirrors into the read-only dataset.
One static site, every city, both languages