Software that speaks your language

A real session: an admin builds and fine-tunes a consultancy app — just by talking.

No schema, no code, no JSON. The admin describes what the business needs; snill.ai proposes, previews, and applies — and every change is reversible. This is the actual conversation and the screens it produced.

EJ

Admin

I run a small consultancy. I need to keep track of clients, the projects we do for them, and the hours my consultants log.

snill.ai

snill.ai

Perfect! Here's what I'll create for your consultancy:

Collections

  • Clients — names, companies, emails, phone numbers, notes
  • Projects — linked to clients, with status (planning, active, on-hold, completed), budget, dates, descriptions
  • Time Entries — hours per consultant per project, with date and a draft → submitted → approved flow. Defaults to today's date and the logged-in consultant

Dashboard — active projects, total clients, hours this week, pending approvals; a pie of projects by status; a bar of hours by project; recent time entries. Each project page lists its time entries with a running total.

Apply Changes

↳ under the hood 3 collections + x-lookup relations (Project→Client, Time entry→Project, Time entry→$users); x-default of $TODAY and $loggedOnUser; an x-transitions status flow; a dashboard page.

snill.ai

snill.ai

✅ Changes applied. Your app has Clients, Projects, and Time Entries (with the draft/submitted/approved workflow), a Dashboard, and sidebar navigation. Consultants can log time, submit it for approval, and you can track everything by client and project.

— built, waiting for data —

The freshly built dashboard with empty stat cards and 'No data' charts
Moments later: the full structure — overview cards, charts, navigation — just waiting for data.
EJ

Admin

Add some testdata to my app.

snill.ai

snill.ai

All done! I've added:

  • 8 Clients — from enterprise (Acme Corp) to startups and nonprofits (Green Energy Partners)
  • 8 Projects — 5 active, 1 planning, 1 on hold, 1 completed
  • 8 Time Entries — a mix of draft, submitted, and approved

Your dashboard now displays real data.

— the app so far —

Dashboard with stat cards, a projects-by-status pie chart and an hours-by-project bar chart
The dashboard, live with sample data — stats, a status pie, and an hours-by-project bar.
EJ

Admin

Each time entry's amount should be the hours times the project's hourly rate. And copy the rate onto the entry so it doesn't change if we re-price the project later.

snill.ai

snill.ai

Here's what I'll add:

  • Projects → Hourly Rate (currency)
  • Time Entries → Hourly Rate — auto-copies from the project when you create the entry; re-pricing the project later won't change existing entries
  • Time Entries → Amount — auto-calculates as hours × hourly_rate

Each entry captures a snapshot of what the work was worth at that moment.

Apply Changes

↳ under the hood a linked field (copy-on-create, locked) + an x-calculate field (hours * hourly_rate), computed server-side.

snill.ai

snill.ai

✅ Changes applied. Hourly Rate is locked in at create time; Amount is calculated on every entry. Sample data refreshed with realistic rates ($75–$150/hr).

Time Entry detail showing Hourly Rate 100 USD and a calculated Amount of 300 USD
A time entry: rate frozen at logging time, amount calculated automatically (note the fx).
EJ

Admin

Show me totals — hours and revenue per project, and a dashboard with this month's numbers.

snill.ai

snill.ai

Your sample data shows 49 total hours logged, totaling $4,900 in revenue. I'll add:

  • A Monthly Report page — Hours & Revenue by Project (grouped, with a grand total), plus This-Month stats including approved hours and approved revenue
  • A "This Month" section on the Dashboard, with a revenue-by-project bar chart
Apply Changes

↳ under the hood a grouped-table report + stat widgets, filtered with the $MONTH_START / $MONTH_END date variables; SUM aggregations over time entries.

snill.ai

snill.ai

✅ Changes applied. The Monthly Report and the dashboard's This-Month section are live.

Monthly Report page with This-Month stat cards and an Hours & Revenue by Project table with a grand total
The Monthly Report — hours & revenue per project with a grand total, scoped to the current month.
EJ

Admin

Consultants should only see their own time entries. My two managers should see everything.

snill.ai

snill.ai

I'll add two roles:

  • Manager — sees and manages all time entries
  • Consultant — sees only their own

Managers bypass the restriction; admins always see everything. This applies to list views, detail pages, and the dashboard.

Apply Changes

↳ under the hood ownerAccess: "own" on time entries, with manager in ownerAccessExempt — enforced at the data layer.

snill.ai

snill.ai

✅ Changes applied. Consultants see only their own entries; managers and admins see all. When you invite real team members and assign the role, the rules take effect automatically.

EJ

Admin

Add invoices. An invoice goes draft → sent → paid. Only managers can mark one paid.

snill.ai

snill.ai

I'll add an Invoices collection:

  • Invoice Number — auto-generated (INV-00001, INV-00002, …)
  • Client, Project (optional), Amount, Issue Date (defaults to today), Due Date, Notes
  • Statusdraft → sent → paid, both transitions managers-only; once paid, the invoice is locked

Invoices appear in the sidebar, and project pages show related invoices with a total.

Apply Changes

↳ under the hood x-transitions (role-gated steps + field locks) and an x-template auto-number.

snill.ai

snill.ai

✅ Changes applied. Auto-numbered invoices, the managers-only draft→sent→paid workflow (paid = locked), sidebar entry, and related invoices on each project.

Invoice detail with a Draft / Sent / Paid step indicator at the top
An invoice with a real workflow — a draft→sent→paid stepper, not just a status field.
EJ

Admin

Create some test invoices.

snill.ai

snill.ai

Done! I've added 7 test invoices:

  • 3 Paid (INV-00001, INV-00003, INV-00006) — locked
  • 2 Sent (INV-00002, INV-00004) — awaiting payment
  • 2 Draft (INV-00005, INV-00007) — ready for manager review

Total invoiced value: $9,850.

Invoices list showing seven invoices across clients, with status filter chips
The invoices list — the workflow in action, filterable by draft / sent / paid.
EJ

Admin

Remind the invoice owner 3 days before it's due — and again the day it becomes overdue.

snill.ai

snill.ai

I'll add two automated email reminders to the Invoices collection:

  • Invoice Due Soon — 3 days before the due date, emails whoever created the invoice (number, client, amount)
  • Invoice Overdue — the day after the due date passes, flags it as overdue and asks for follow-up

Both fire only on sent invoices, so paid ones stay quiet.

Apply Changes

↳ under the hood two scheduled triggers relative to due_date (offsetDays: -3 and offsetDays: +1), gated on status == 'sent' — they run on the daily reminders cron, no setup.

snill.ai

snill.ai

✅ Changes applied. Your invoice owners now get timely reminders before and after the due date.

EJ

Admin

Actually, consultants shouldn't see the hourly rate at all.

snill.ai

snill.ai

✅ Done. The Hourly Rate field is hidden from consultants; managers keep full visibility for billing.

EJ

Admin

Hm — on second thought, keep amount visible to consultants, just not the rate.

snill.ai

snill.ai

✅ Done. Consultants can see Amount again (what they've earned), while Hourly Rate stays hidden.

EJ

Admin

Also show the hourly rate field.

snill.ai

snill.ai

✅ Done. Hourly Rate is now visible to consultants but read-only — only managers can edit it.

↳ under the hood three quick field-level access edits in a row — each previewed and applied instantly, each reversible from version history.

— the finished app —

Time Entries list view with consultant, project, date, hours, status and amount columns, and draft/submitted/approved filters
The Time Entries list after the whole session — status, hours, and amount at a glance, filterable by workflow stage.

One conversation. A working app.

Your turn.

If you can describe your business to a new hire, you can build your system with Snill. Start free — no credit card, no devs.