`) with the current contents of<br>embeds/FILENAME.html and writes the result to preview.html.
DO NOT edit preview.html directly — your edits will be overwritten on the next<br>build. Edit this template (page chrome + section structure) or the embed files<br>under embeds/ (component internals).
Open in a browser AFTER running build-preview.sh:<br>open marketing/landing-page/preview.html<br>Works over file:// — no local server required.<br>-->
EZLogs — Plain-English activity logs for Rails & Next.js apps (and the AI agents in them)
-->
). -->
Plain-English activity logs for every action in your app — human or AI.
EZLogs auto-captures every request, background job, and database change in your Rails or Next.js app, then turns each customer or agent action into one plain-English card your whole team — and your own AI — can read.
Start free — 14 days<br>See a real action ↓
Drop-in for Rails and Next.js · No card required · Read-only by design
14:02:11 Started POST "/orders" for 78.96.x.x<br>14:02:11 User Load (0.4ms) SELECT "users".* WHERE "id" = $1 LIMIT 1<br>14:02:11 Cart Load (0.6ms) SELECT "carts".* WHERE "id" = $1 LIMIT 1<br>14:02:11 Order Create (2.3ms) INSERT INTO "orders" ... RETURNING "id"<br>14:02:11 [ActiveJob] Enqueued ChargeCardJob (jid=7b3...) to Sidekiq<br>14:02:11 Completed 302 Found in 89ms (ActiveRecord: 9.4ms)<br>14:02:12 [Sidekiq] ChargeCardJob start jid=7b3...<br>14:02:13 [Sidekiq] ChargeCardJob done jid=7b3... 1.2s
Maria Chen placed an order for 3 books
Order #1247<br>Payment #884<br>Cart #92
Charged €47.20, decremented inventory for 3 titles, queued the confirmation email, and notified the warehouse.
by Maria Chen<br>in 1.34 s<br>· ✓ Success
01The problem<br>One customer action, told two ways.
Same order. Same data. Toggle to see what your server says — and what your team needs.
Raw logs<br>EZLogs
[2026-05-10 14:02:11] Started POST "/orders" for 78.96.x.x at 14:02:11<br>[2026-05-10 14:02:11] Processing by OrdersController#create as HTML<br>[2026-05-10 14:02:11] Parameters: {"cart_id"=>"92", "address_id"=>"341"}<br>[2026-05-10 14:02:11] User Load (0.4ms) SELECT "users".* WHERE "id" = $1<br>[2026-05-10 14:02:11] Cart Load (0.6ms) SELECT "carts".* WHERE "id" = $1<br>[2026-05-10 14:02:11] (1.1ms) BEGIN<br>[2026-05-10 14:02:11] Order Create (2.3ms) INSERT INTO "orders" (...) RETURNING "id"<br>[2026-05-10 14:02:11] OrderItem Create (1.8ms) INSERT INTO "order_items" ...<br>[2026-05-10 14:02:11] (4.2ms) COMMIT<br>[2026-05-10 14:02:11] [ActiveJob] Enqueued ChargeCardJob (jid=7b3...) to Sidekiq(default)<br>[2026-05-10 14:02:11] Redirected to /orders/1247<br>[2026-05-10 14:02:11] Completed 302 Found in 89ms (ActiveRecord: 9.4ms)<br>[2026-05-10 14:02:12] [Sidekiq] ChargeCardJob start jid=7b3...<br>[2026-05-10 14:02:12] Payment Create (3.1ms) INSERT INTO "payments" ...<br>[2026-05-10 14:02:13] Order Update (1.4ms) UPDATE "orders" SET "status" = $1 ...<br>[2026-05-10 14:02:13] Inventory Update (0.9ms × 3) UPDATE "inventories" SET "stock" ...<br>[2026-05-10 14:02:13] [ActionMailer] Delivered confirmation_email to maria.chen@example.com<br>[2026-05-10 14:02:13] [Sidekiq] ChargeCardJob done jid=7b3... 1.2s
Maria placed an order for 3 books totaling €47.20 . Payment cleared on the first attempt, inventory was decremented for all three titles, a confirmation email was queued, and the warehouse was notified to begin packing.
14:02:11 POST /orders — 200, 89 ms
14:02:11 Order #1247 created
14:02:11 Order Item ×3 created
14:02:12 ChargeCardJob started
14:02:13 Payment #884 — €47.20, succeeded
14:02:13 Order #1247 — pending → paid
14:02:13 Inventory ×3 — stock −1 each
14:02:13 Email queued + warehouse notified
Both views describe the exact same order. One is what your server says. The other is what your team actually needs.
02How it works<br>Three sources of truth, stitched into one story.
Every customer action lives at the intersection of these three signals. EZLogs captures all three and links them automatically.
Every request
The intent: who clicked what, from where, with which result.
Every background job
The reaction: every charge, email, restock — linked to the request that started them.
Every database change
The truth: every row your app touched, with before and after values.
Drop in one gem or one npm package. Zero per-route code.
02bTwo readers, one source<br>Humans browse it. Your AI queries it. Same source of truth.
By end of 2026, AI agents will do 30–60% of meaningful work inside production apps. Nobody has a clean way to see that work or explain it to non-technical colleagues. EZLogs is the activity log built for both readers at once.
For your team<br>A live page for everything that matters.
Every customer, every order, every agent — each one has its own page that reads itself. "Here's what Claude did this week. Here's what happened to Order #4300." Send the link to anyone. No training needed.
For your AI<br>Your AI can read the same log, and answer in your words.
Ask in the sidebar, or connect Claude...