Web monitoring agent · early access

Tell it what to watch.
Get only what matters.

A web monitoring agent for booking slots, price drops, delivery updates and new posts. Describe what you're waiting for in plain language, approve the rule the agent drafts, and let scheduled checks do the refreshing for you.

Human-approvedAI drafts, you confirm
Rule-based checksNo model call on routine checks
Recoverable deliveryPersistent alert queue

The problem

The things people wait for still live on pages that don't notify anyone.

Cancellations, restocks, booking slots and tracking updates can change between visits. Checking them manually takes time, and useful changes can be hard to distinguish from page noise.

Challenges we're addressing

  • Separating meaningful changes from ads and layout updates
  • Setting up rules without writing selectors by hand
  • Distinguishing a failed check from an unchanged page
  • Recovering pending alerts after a restart
  • Keeping routine checks independent of model inference

Our approach

  • Alerts on the meaning — a new slot, a met price, a new step
  • Set up by describing it in a chat message
  • Only a fully parsed snapshot can replace the last good state
  • State change and alert are committed in one transaction
  • AI helps draft and revise rules; routine checks use plain code

How it works

AI where it's smart. Code where it must be exact.

A model proposes the rule once; a deterministic engine runs it from then on. Every draft and every later change goes through your review.

Describe

Send a URL and what you want in a chat message. No selectors, no code.

“Alert me if this lens drops under 1.1M won”
LLM

Draft

An AI worker reads a sanitized copy of the public page and proposes a structured rule as strict JSON.

{"selector": ".price", "type": "number", "op": "<=", "value": 1100000}

Approve

You review the draft and approve, edit, retry or hand it off. Nothing goes live without you.

/approve 12

Watch

A sequential scheduler runs the rule on a fixed interval and alerts only on real transitions.

checks: 61s · AI calls: 0
Why this matters: intelligence is paid for when a rule is drafted or repaired, not on every check. Routine checks are plain code — fast, cheap and predictable.
Web monitoring architecture: a chat request goes to an AI draft worker, then to human approval. Approved rules run in a scheduler that polls target sites and commits state and queued alerts in one database transaction. A watchdog monitors the scheduler. Chat request URL + intent AI draft worker page → typed JSON rule Human approval approve · edit · hand off Target sites fixed interval, validated Scheduler parse → snapshot → diff State + outbox one database transaction Alerts sound / silent Watchdog heartbeat · restart

Drafting, step by step

From one sentence to a rule you can read.

The draft is the product. It has to be specific enough to run unattended, show what it is based on, and say clearly when a page can't be supported.

1 · Requestchat
“Tell me when this lens is under ₩1,100,000 and in stock.”https://shop.example/lens/50mm-f1.8

Sanitized page excerpt

<!-- scripts, styles, tracking removed -->
<h1>50mm F1.8 Lens</h1>
<span class="price-now">₩1,290,000</span>
<del class="price-was">₩1,390,000</del>
<p class="stock">In stock</p>
<aside class="ad">Summer sale…</aside>
2 · DraftAI · strict schema
{
  "type": "condition",
  "url": "https://shop.example/lens/50mm-f1.8",
  "checks": [
    { "selector": "span.price-now",
      "parse": "number", "op": "<=", "value": 1100000 },
    { "selector": "p.stock",
      "parse": "text", "op": "contains", "value": "In stock" }
  ],
  "notify": "on_transition",
  "interval_s": 61,
  "evidence": ["price-now = ₩1,290,000", "stock = In stock"],
  "ignored": ["del.price-was (old price)", "aside.ad"],
  "uncertainty": "Stock text may differ per option."
}
3 · Reviewyou decide
WatchCurrent price + stock text
Alert when≤ ₩1,100,000 and in stock
Right nowNot met (₩1,290,000)
ChecksEvery 61 s · no model call
Flagged: stock text may differ per option. Choose an option on the page if you need a specific one.
/approve 12/edit 12/retry 12/handoff 12

Illustrative example with a placeholder store. Field names are simplified from the agent's internal schema.

Reliability design

A monitor is only useful if you can stop thinking about it.

The agent is designed around failure first: recoverable state, explicit failure modes and rules a person can read.

Transactional outbox

State changes and pending alerts are committed in one database transaction, so a queued alert survives a crash or restart and is retried until it is delivered.

Last-known-good state

Empty, partial or unparseable responses never replace the last good snapshot, so an outage isn't mistaken for “sold out”.

Cross-checked sources

Where supported, comparing two permitted views of the same data helps flag inconsistent availability before generating an alert.

Heartbeat & watchdog

A separate watchdog checks the process and its heartbeat every few minutes, restarts it if it stalls, and reports the restart.

Alerts that respect attention

Separate change alerts from routine status updates, with quieter recovery messages and controlled escalation for repeated errors.

Security boundaries

Target URLs are validated, requests to private networks are blocked, and secrets are masked in logs and stored errors.

Monitoring use cases

Appointments · availability changes Parcel tracking · auto-closes on delivery Room availability · supported booking pages Public announcements · new and updated posts Price & stock · numeric and text conditions Supported page regions · scoped change detection

The intended scope is public pages and APIs that permit automated access. Support depends on the source site's terms, access limits and technical behavior; private or restricted content is outside the intended scope.

Built with Claude

A one-person company that ships like a team.

Much of our implementation work is done with Claude Code: turning design notes into modules, writing and running the test suite, tracing failures from logs, and producing the verification reports that live next to the code.

The same discipline applies inside the product: the model proposes, a human approves, and plain code executes. Next, we're bringing Claude into the agent itself.

01

Design notes → working modules

Architecture, decision records and monitor specs are written first; Claude Code implements against them, one reviewable change at a time.

02

Tests as the contract

The monitoring agent has 119 automated, network-free tests covering parsers, the scheduler, state transactions, security checks and chat commands.

03

Verification on the real thing

Live-site checks and recorded evidence are part of each release, so a passing test suite is never the only signal.

04

Next: Claude in the drafting step

The drafting backend is already pluggable. Next is a Claude API backend that uses tool use for the rule schema, measured on a set of real pages before users rely on it.

Selected work

Independent software projects.

Earlier projects in visual recognition, search, simulation and data visualization, built with the same habits: careful perception, conservative decisions and verification before release.

Mobile · vision + searchIndependent project

Puzzle path planner

Explores number-tile board recognition and move planning, using visual previews to explain candidate moves while a background search improves the plan.

Visual recognitionSearch algorithmsMove previews
Desktop · scientific vizIndependent project

3D synoptic weather viewer

Explores surface pressure and upper-air weather-model data in an interactive 3D view, with pressure-center detection and vertical profiles for scientific visualization.

Layered weather dataVertical profiles3D visualization
Browser extension · searchIndependent project

Listing verification assistant

Explores cross-referencing public property listings, distinguishing direct matches from related or estimated results so a user can review the evidence.

Listing comparisonEvidence reviewGraded confidence
Mobile game · custom physicsIndependent project

Soft-body physics racer

A tilt-and-touch driving game built around a custom spring-mass simulation, with deformable vehicles, a speed-adaptive camera and interactive courses.

Custom physicsTouch controlsCourse design

How we build

Principles we don't compromise on.

We aim to keep design decisions and verification evidence close to the code as our projects develop.

Never guess silentlyUnknown is a state. We show it rather than fill it in.
Privacy by architectureProcess on-device where possible; collect nothing we don't need.
Verify on the real thingReal devices, real sites, recorded evidence — not just green unit tests.
Humans approveAI drafts and explains. People decide what runs.

Roadmap

From a personal tool to a hosted service.

The agent runs today as a self-hosted service. Next comes a Claude-powered drafting backend, then a hosted multi-user beta.

Now

Self-hosted agent

  • Chat-bot control & natural-language drafts
  • Six monitor types, generic page + condition rules
  • Outbox, watchdog, heartbeat, error escalation
  • 119 automated, network-free tests
Next

Claude-powered drafting

  • Claude API with tool use for typed rule drafts
  • User-reviewed selector repairs after site redesigns
  • Eval suite of real pages for draft accuracy
Later

Hosted multi-user beta

  • Per-user isolation, quotas and billing
  • Web dashboard alongside chat control
  • Templates for supported monitoring use cases

Contact

What would you like to monitor?

We're onboarding a small group of early users. Tell us what you're waiting for, and we'll tell you whether the agent can watch it.

admin@hanseong.kim