Skip to content
theakrista.dev
Case Studies

2025 - Present

Private client work

Real Estate Marketplace

Building and launching a property viewing platform end to end, from SSR performance to the AI that assigns leads to agents.

Senior Full-Stack DevOps Engineer · sole engineer for 6 months

Next.jsReactTypeScriptNode.jsPythonPostgreSQLMongoDBVercelRenderClaude API
infra cost reduction across Vercel, Render & APIs
80%
unauthorized usage stopped after finding a leaked API key
¥100k/mo
as the company's sole engineer, zero missed releases
6 months
performance budget gating every deploy
Lighthouse CI

The Problem

The company needed a real-estate viewing platform (built, launched, and operated) and for six months I was the only engineer to do it, running it in the same period I was sole engineer on an eSIM commerce platform for a sister company. Requirements came directly from the CEO, agents, photographers, and SEO specialists, not from tickets.

In this market the product is search traffic: if listing pages render slowly, rankings drop and the business simply doesn't get seen. The platform I inherited had server-side rendering bottlenecks that made performance a revenue problem, not a polish problem.

Behind the storefront, the operation ran on manual work: leads sat unassigned until someone noticed them, and property data arrived as unstructured listings and 図面 (floor-plan) files that staff re-typed by hand.

The Constraints

A team of one

No second engineer to review code, share on-call, or catch mistakes. Every process had to assume the reviewer, the deployer, and the person debugging at 11pm were the same person.

Non-technical operators

Agents and photographers use the platform daily. The admin console had to be safe for non-engineers, which is why every change is audit-logged and reversible rather than a raw database edit.

SEO is the business

Listing pages live or die by search ranking, so performance regressions are revenue regressions. Performance had to be enforced by machines (Lighthouse CI), not by memory.

Japanese real-estate data

Layouts like 2LDK, areas in ㎡ and tsubo, kanji addresses, and 図面 floor-plan files with no standard format. The data model and extraction pipeline had to handle domain conventions, not just text.

The Architecture

A server-rendered Next.js storefront tuned for search performance, an audit-logged admin console for the operations team, and a Python/PostgreSQL data layer fed by AI extraction, with automation handling the work that used to wait for a human.

  • Resolving the SSR bottlenecks came first, then Lighthouse CI budgets went into the pipeline so the regression can never quietly return. Performance is enforced, not remembered.
  • Lead assignment is automated: instead of inquiries sitting in a queue until someone notices, the workflow routes each lead to the right agent, the difference between responding in minutes and losing the customer (the triage system has its own case study).
  • Property data flows in through scrapers and 図面 floor-plan files; OCR plus Claude extraction turns them into typed, validated records in PostgreSQL (the pipeline has its own case study).
  • Everything an agent or admin does is audit-logged and attributable, automation and humans share one review model.

The Trade-offs

Every architecture is a set of bets. These are the ones I made, and what I gave up to make them.

Rendering strategy

SSR with aggressive caching and a Lighthouse CI budgetoverClient-side rendering or per-request SSR everywhere

Listing pages change a few times a day but are read constantly, and search engines are the most important reader. Cached server rendering gives crawlers fast, complete HTML while keeping infrastructure cost flat.

Admin operations

An audit-logged admin consoleoverDirect database access for the team

With non-technical operators touching production data daily, 'who changed what, when' is not bureaucracy, it's how a sole engineer sleeps. Every automated and human edit shares the same reversible trail.

Lead routing

AI-automated assignment with human visibilityoverManual triage by whoever checks first

Speed-to-first-response decides whether a lead converts. Automating the routing removed the queue entirely, while keeping assignments visible and overridable in the console rather than hidden inside a black box.

Infrastructure

Managed platforms (Vercel + Render), optimized hardoverMigrating to raw AWS for lower unit cost

I know AWS well, but managed platforms are the right call when the entire ops team is one person. I recovered the cost difference by right-sizing, caching, and auditing usage: 80% off the bill without taking on server ops.

The Outcome

The platform launched, got fast, got cheap, and stopped depending on manual work, while I remained final reviewer for every production release.

  • Built and launched the platform working directly with the CEO, marketing, design, and UI/UX teams, then kept every release cycle on schedule as sole engineer.
  • Resolved the SSR bottlenecks and wired Lighthouse CI into the pipeline, turning performance from a hope into a budget every deploy must pass.
  • Shipped the audit-logged admin console and AI-automated lead assignment, replacing manual triage in collaboration with the CEO, agents, photographers, and SEO specialists.
  • Cut infrastructure costs 80% across Vercel, Render, and API usage, and treating the bill as telemetry surfaced a leaked API key costing ¥100,000/month in unauthorized usage, which I revoked, rotated, and locked down (along with domains and DNS for all company web properties).

Lessons Learned

Cost is an observability problem

The leaked API key wasn't found by a security scan, it surfaced because I treated the bill as telemetry and investigated a line item that didn't match traffic. Monitor spend the way you monitor errors.

Performance is a business metric wearing a technical costume

For an SEO-driven marketplace, LCP isn't a vanity number, it's distribution. Putting Lighthouse in CI reframed performance from 'engineering pride' to 'a budget the business owns.'

Automate the queue, not the judgment

Lead assignment and data extraction removed waiting, not decision-making, agents still own the relationship and humans still review the uncertain cases. The best automation makes the team faster without making it blind.