How to build autonomous, high-quality portal sites that rank, convert, and never expose Lasse
| KPI | Target (3 months) | Target (6 months) | Target (12 months) |
|---|---|---|---|
| Indexed pages | 50+ | 150+ | 300+ |
| Monthly organic visitors | 5,000 | 25,000 | 100,000 |
| Avg. position for target keywords | Top 20 | Top 10 | Top 5 |
| EG click-throughs/month | 100 | 500 | 2,000 |
| EG conversions/month | 5 | 25 | 100+ |
| Bounce rate | <65% | <55% | <45% |
| Avg. time on page | 3+ min | 4+ min | 5+ min |
| Domain authority (Moz/Ahrefs) | 10+ | 25+ | 40+ |
On the 1st of each month, Pixel produces a Portal Performance Report (saved to memory/portal-reports/YYYY-MM.md) covering all KPIs, content stats, SEO rankings, and recommendations. Lasse reviews at his convenience. No action required unless flagged.
This isn't just a preference — it's a hard constraint. Every decision below flows from this.
Register via Cloudflare Registrar — automatic WHOIS privacy, no personal info exposed. Use the lasse.pixel.ai@gmail.com account (already used for Cloudflare).
Each site has a pseudonymous editorial voice — NOT a fake person with a face (that's detectable and unethical), but a brand voice. "The HelloGeorgia Team" or "Written by locals who've made Georgia home." No individual author bios with fake names/photos. Honest without being identifiable.
"HelloGeorgia is built by a small team of expats and locals who love this country. We've lived here for years and wanted to create the guide we wish existed when we first arrived." — True, vague, not attributable.
Use a site-specific email: hello@hellogeorgia.com (Cloudflare Email Routing → forward to a dedicated inbox). No phone numbers, no physical address. Contact form only.
Cloudflare Web Analytics (privacy-first, no cookies, no PII). No Google Analytics — it creates traceable account links. If Google Search Console is needed, use a separate Google account per site.
EasyGeorgian links should look like genuine editorial recommendations, not affiliate links. Use rel="noopener" (NOT rel="sponsored" or rel="nofollow" — we're recommending a genuinely good product, not doing paid placement). UTM parameters for tracking: ?utm_source=hellogeorgia&utm_medium=article&utm_campaign=learn-georgian.
This is the key question. The strategy: make the connection look good, not suspicious.
These are the non-negotiable standards every piece of content must meet. They serve as both creative guidelines and quality gates.
Every factual claim must be verifiable. Prices, distances, opening hours, visa rules — cross-reference against official sources. If uncertain, say "at time of writing" or "check current rates." Never fabricate statistics, reviews, or quotes. Getting one fact wrong destroys trust in everything else.
The voice should feel like someone who LIVES here, not someone who Googled it. "The marshrutka from Didube station leaves when it's full — not on a schedule" reads differently from "Transport in Georgia includes minibuses called marshrutkas." First-person observations, practical tips, honest opinions. We have 5 years of lived experience — use it.
Georgia isn't perfect. Driving is dangerous. Bureaucracy is frustrating. Winter in Tbilisi is grey. Saying so builds MORE trust than pretending everything is wonderful. Readers detect and punish promotional fluff. An honest negative makes every positive more believable.
"The Complete Guide to Khinkali" should be the LAST article anyone ever needs to read about khinkali. Cover history, regional variations, how to eat them, where to find the best ones, how to make them, the etiquette, the controversy (does real khinkali have cilantro?). We win by being comprehensive, not by covering more topics superficially.
Avoid AI writing tells: no "delve into," no "it's worth noting that," no "nestled in the foothills," no "tapestry of cultures." Write like a smart friend explaining something over coffee. Short sentences. Opinions. Humor when appropriate. Imperfect sentence structures. Personality.
Outdated content is worse than no content. Every article has a "last updated" date. Price-sensitive content gets reviewed quarterly. Visa/regulation content gets checked monthly. If something changes, update immediately — don't let stale info sit.
The EG CTA should feel like a genuine recommendation you'd make to a friend — "seriously, learn a few phrases, it changes everything." NOT every article needs an EG mention. When it appears, it should be contextually relevant. If removing the EG link would make the article worse, the integration is wrong.
Google doesn't penalize AI content per se — it penalizes unhelpful content. But we should still ensure content reads as human-written:
Each major section is a "hub" page linking to detailed "spoke" articles:
We don't do outreach or link schemes. We build content so good that people link to it naturally:
The core challenge: how does Lasse trust autonomous content production without reviewing every article?
Every Monday, a cron job triggers an isolated session that:
memory/portal-audit/YYYY-Wnn.md1st of each month, comprehensive report covering:
Sent to Lasse via Telegram with a link to full report.
Every 3 months, a thorough review of:
Writing a 3,000-word researched article on Opus 4.6 costs significant compute. If I'm doing this during heartbeats, it competes with EG/Returna work in the main session. Solution: isolated cron sessions with dedicated time blocks.
┌─────────────────────────────────────────────────────┐
│ MAIN SESSION │
│ Lasse interaction, EG work, Returna, ad-hoc tasks │
│ Available 24/7 for direct chat │
└──────────────────────┬──────────────────────────────┘
│ spawns / monitors
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ PORTAL CRON │ │ AUDIT CRON │ │ REPORT CRON │
│ Daily 6am │ │ Weekly Mon │ │ Monthly 1st │
│ Write 2-3 │ │ Quality QA │ │ Full report │
│ articles │ │ Link check │ │ KPIs + recs │
│ Isolated │ │ Isolated │ │ Isolated │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────┐
│ GEORGIA-PORTAL GIT REPO │
│ georgia-portal/ (Astro + Tailwind + Markdown) │
│ Articles as .astro or .md files │
│ Auto-deploys to Cloudflare Pages on git push │
└─────────────────────────────────────────────────────┘
Session: Isolated (doesn't block main session)
Model: Opus 4.6 (quality is non-negotiable)
Task prompt:
You are the HelloGeorgia content writer. Your workspace is at georgia-portal/. Read memory/portal-content-plan.md for the current article queue. Write the next 2-3 articles from the queue. For each article: 1. Research: web_search for current facts, prices, details 2. Write: follow the voice/style guidelines in PORTAL-GUIDELINES.md 3. Fact-check: verify every claim, log sources 4. Self-review: run through the pre-publish checklist 5. Commit to git with descriptive message 6. Update portal-content-plan.md (mark done, add next) 7. Deploy: push to Cloudflare Pages Log work to memory/portal-daily/YYYY-MM-DD.md If anything is uncertain or needs Lasse's input, log it but don't block — move to the next article.
Timeout: 30 minutes (enough for 2-3 articles with research)
Delivery: Announce summary to main session (Pixel sees what was published)
Session: Isolated
Model: Opus 4.6
Task: Review last 7 days of published content against quality principles. Check links. Check for outdated info. Log findings.
Timeout: 15 minutes
Session: Isolated
Model: Opus 4.6
Task: Pull analytics data, compile KPIs, analyze trends, write report, send summary to Lasse via Telegram.
Timeout: 15 minutes
workspace/ ├── georgia-portal/ # Astro site (git repo) │ ├── src/pages/ # All articles │ ├── src/layouts/ # Templates │ └── src/components/ # Reusable components ├── memory/ │ ├── portal-content-plan.md # Article queue + status │ ├── portal-guidelines.md # Voice, style, quality rules │ ├── portal-sources.md # Fact-check source log │ ├── portal-daily/ # Daily production logs │ ├── portal-audit/ # Weekly audit logs │ └── portal-reports/ # Monthly performance reports
georgia-portal/src/pages/The portal cron runs in an isolated session — completely separate from the main session. This means:
| Step | What Happens | Quality Gate |
|---|---|---|
| 1. Topic Selection | Pick from prioritized queue (by search volume × competition × relevance) | Is this the highest-impact article we can write right now? |
| 2. Research | Web search for current facts, prices, hours. Check 3+ sources per claim. | Every fact has a source. Log sources in metadata. |
| 3. Outline | Structure the article: H2s, key points, unique angles | Does this structure answer the reader's actual question better than what ranks #1? |
| 4. Write | Draft in the HelloGeorgia voice. Include personal observations. | Read aloud — does it sound human? Would you send this to a friend? |
| 5. Fact Check | Re-verify every specific claim (prices, distances, visa rules) | Zero tolerance for wrong facts. |
| 6. OPSEC Check | Scan for any identifying info | No names, no connections, no metadata leaks |
| 7. SEO Check | Primary keyword in title/H1/intro? Internal links? Schema markup? | Technical SEO checklist passes |
| 8. Publish | Git commit, push, auto-deploy | Builds without errors, page loads correctly |
Managed in memory/portal-content-plan.md:
# Portal Content Plan ## Queue (Priority Order) - [ ] plan/is-georgia-safe (12K searches, LOW competition) ← NEXT - [ ] food/georgian-food-guide (20K, MEDIUM) - [ ] destinations/tbilisi (40K, MEDIUM) - ... ## Published - [x] plan/is-georgia-safe — published 2026-02-15, sources: [...] - [x] plan/best-time-to-visit — published 2026-02-15, sources: [...] ## Needs Update - plan/is-georgia-safe — visa rules changed 2026-04-01, update needed ## Ideas (Unscheduled) - Georgian superstitions article (unique angle, low competition) - "I lived in Georgia for 5 years" retrospective (linkbait potential)
| Risk | Impact | Mitigation |
|---|---|---|
| Google penalizes AI content | Rankings drop | Content is genuinely helpful, well-researched, and human-like. Google's policy is against "unhelpful" content, not AI content per se. Our quality bar exceeds most human bloggers. |
| Someone doxxes Lasse's connection | Reputation | OPSEC architecture (Part 2). But even if discovered, the sites are so high-quality that the story is positive: "entrepreneur builds great Georgia resources." |
| Factual error goes live | Trust damage | Multi-step fact-checking process. Weekly audits catch errors quickly. Correction policy: fix immediately, add "Updated" note. |
| Competitor outranks us | Traffic loss | Continuous improvement cycle. Monitor rankings weekly. Update and expand content that loses position. |
| Compute costs too high | Budget pressure | Portal cron runs once daily, 30min max. ~2-3% of daily compute. Pause if budget tight. |
| Content becomes stale | SEO decline | "Last updated" dates on every article. Quarterly freshness reviews. Automated alerts for pages older than 6 months without update. |
| EG integration feels spammy | Reader trust | Maximum 1 EG mention per article + 1 footer CTA. Never in the first 500 words. Always contextually relevant. |
The sites must look and feel like they were built by a top-tier design team — not a template. Consistent, polished, modern. Every UX element earns its place by improving engagement, trust, or conversion.
A single design system shared across HelloGeorgia, ExpatGeorgia, and future sites. Different brand colors per site, same underlying architecture:
brand-* palette (HG = warm amber, EG = red, Expat = teal) but shares dark-*, slate-*, surface-* tokens.Every article opens with a 2-3 sentence direct answer in a highlighted box. "Is Georgia safe? Yes — it's one of the safest countries in Europe. Here's the full picture." Captures Google featured snippets AND respects reader time. Readers who want more keep scrolling; those who don't got their answer and remember the site positively.
Sticky sidebar (desktop) or collapsible top bar (mobile) with scroll-tracking. Highlights current section. Lets readers jump to what they care about. Long articles feel navigable, not overwhelming.
Beautiful inline cards showing a Georgian phrase relevant to the article context. E.g., in a restaurant guide: a styled card with "გამარჯობა — gamarjoba — Hello" with a subtle "Learn more phrases →" link to EG. These are genuinely useful AND the highest-converting EG touchpoint because they demonstrate immediate value.
Interactive JavaScript widgets: "How much will X days in Georgia cost?" with sliders for accommodation level, food budget, activities. Outputs a real estimate. Unique content that no competitor has. Embeddable = linkbait. Built with vanilla JS (no framework bloat).
Every practical article shows "Prices verified February 2026" or "Visa rules checked February 2026" with a small ✓ badge. Builds trust that info is current. Creates an implicit promise we must keep (forces us to update).
Destination guides include interactive Mapbox/Leaflet maps with custom markers for recommended spots. Color-coded by category (food = orange, sights = blue, nightlife = purple). Downloadable as offline maps. Major differentiator vs text-only competitors.
For "vs" articles and decision-making content. Clean, scannable tables with color-coded cells (green = advantage, red = disadvantage). Mobile-responsive with horizontal scroll or card-based layout on small screens.
Thin progress bar at top of page. Reading time estimate in article header. Signals quality (long-form = comprehensive) while showing progress (you're 60% through).
Not random "you might also like" — contextually relevant articles that answer the natural next question. After "Is Georgia Safe?" → "Best Time to Visit" + "Visa Guide" + "Tbilisi Neighborhoods." Keeps readers in the ecosystem.
Clean share buttons (copy link, WhatsApp, Twitter, email) — NOT a wall of social icons. "Save this guide" button that bookmarks via localStorage (no login required). Returning visitors see their saved articles.
"Reverse prompting" = building structured self-review tools that force higher output quality. Instead of relying on vague "write well" instructions, we create specific frameworks that catch weaknesses systematically.
RESEARCH → WRITE → CRITIC PASS → REWRITE → PUBLISH
↑ │
└──── LESSONS LEARNED ←── WEEKLY AUDIT ←──┘
Before writing a single word, generate a quality brief that answers:
This brief is saved as a comment at the top of the article file. It anchors every writing decision.
After completing a draft, switch to "harsh critic" mode and evaluate against 10 dimensions:
| # | Dimension | What "10" Looks Like | Minimum to Publish |
|---|---|---|---|
| 1 | Accuracy | Every fact verified, sources logged, zero errors | 9 |
| 2 | Completeness | Reader never needs to visit another site on this topic | 8 |
| 3 | Voice | Sounds like a sharp, opinionated friend who lives in Georgia | 8 |
| 4 | Engagement | Opening hooks you. Sections flow. You want to keep reading. | 7 |
| 5 | Uniqueness | Contains insights, data, or angles that NO other article has | 7 |
| 6 | Practicality | Reader can take action immediately (addresses, prices, steps) | 8 |
| 7 | Scannability | H2s tell the story. Bold key info. Tables for comparisons. | 8 |
| 8 | SEO | Keyword in H1/intro/URL. Internal links. Schema. FAQ section. | 8 |
| 9 | Human Feel | Would pass any AI detector. Has personality, humor, opinions. | 8 |
| 10 | EG Integration | Natural, contextual, adds value. Or correctly absent. | 8 |
Any dimension below minimum → rewrite that section before publishing.
Scores are logged in article metadata. Over time, this creates a quality dataset showing which dimensions need more attention.
After building a page, evaluate it from a first-time visitor's perspective:
A markdown file that starts with Lasse's initial guidelines and grows with lessons learned:
Every weekly audit can add new rules. The guidelines compound in quality over time — self-improving by design.
Track which EG touchpoints convert best and iterate:
Example insight: "Phrase callouts in food articles convert 3× better than generic footer CTAs" → shift all food articles to phrase callouts.
The magic of this system is that it gets better over time without additional effort:
Month 1 = slow. Month 6 = noticeable. Month 12 = flywheel is spinning. This is a long game, and the system is designed to play it without burning out the operator (Lasse) or the builder (Pixel).