An internal tool is a small private web app your team uses to manage records such as inventory, requests or customers. With an AI app builder you describe the records, statuses and roles. It builds forms, filtered lists, logins and an admin area, replacing a fragile shared spreadsheet with an app that enforces your rules.
- Move a spreadsheet into an app when people overwrite each other, rules live in cell comments, or nobody can say who changed what.
- Map records, statuses and roles before you prompt. That map is most of the prompt.
- Bring existing rows in by attaching a CSV or XLSX file and explicitly asking Wisy to load them.
- Logins, roles and a change log are features you describe. There is no single sign-on, but Google sign-in works with your own credentials.
- Scheduled digests run every 30 to 60 minutes, not at exact clock times.
- Know the limits up front: database capacity per plan, no free-text search over large tables, and no code export.
Signs your spreadsheet should become an app
Spreadsheets are the best prototyping tool most teams have. They become a liability when several people run a process through one. Watch for these signs:
- Two people edited the same cell and one change silently disappeared.
- A cell comment says "don't touch column F", and someone touched column F.
- The status column holds "Done", "done", "DONE " and "finished", so every filter is wrong.
- Nobody can answer "who changed this quantity, and when?"
- A supplier or contractor needs to see some rows, so they get the whole file.
- Someone copies rows into an email every morning to tell others what's overdue.
You are not alone. The European Spreadsheet Risks Interest Group keeps a running catalog of public spreadsheet horror stories, noting that such reports "appear in the global media at a fairly consistent rate" and illustrate the problems of uncontrolled spreadsheet use.
Keep the spreadsheet for analysis, models and one-person work. An internal app is for shared operational records, where the rules matter more than formula freedom.
| Factor | Shared spreadsheet | Internal app |
|---|---|---|
| Permissions | Share the whole file, view or edit | Roles per screen and per record, such as "staff see only their own requests" |
| Validation | Optional rules that a paste can bypass | Required fields and fixed options, enforced on every save |
| Audit trail | File-level history; hard to trace one value | A change log per record: who, what, old and new value, when |
| Concurrency | Last edit wins; counts drift | Stock and counters change in one guarded step, and conflicting edits can be rejected instead of silently overwritten |
| Notifications | Manual emails or scripts | Emails on events, plus scheduled digests every 30 to 60 minutes |
| Limits | Flexible formulas and ad-hoc analysis | Exact filters instead of free-text search on large tables; capacity set by your plan |
Map the workflow: records, statuses, who can do what
Before you write a prompt, translate the sheet into five terms:
- Record
- One thing you track: an item, a request, a customer. Usually one tab or one row type.
- Field
- One column, with a type: text, number, date, a fixed list of options, a file or a link to another record.
- Status
- Where a record is in its life, plus the allowed moves between statuses.
- Role
- A group of people with the same permissions, such as staff, manager or finance.
- View
- A filtered list someone opens every day, such as "my open requests" or "below reorder level".
Take a purchase-request sheet as an example. Requesters create a request and submit it. A manager approves or rejects it. Finance marks approved requests as ordered and then received. Requesters see only their own requests; finance sees everything. Write that down in five lines and you have the spine of the app.
One design choice pays off later: turn free-text columns into fixed options wherever you can. Department, category, location and status should be lists, not typing. The app filters on exact values, and fixed options make every filter and total correct.
Build it: prompt templates for three common tools
- Map the workflow as above, on one page.
- Export a clean CSV or XLSX of the current data, prepared as described under "Bringing your existing data in" below.
- Paste a template into a new WisyLink chat, attach the file and say explicitly that the rows should be loaded.
- Read the build's final note. It tells you how to reach the admin area, often by being the first to sign up, and which Integrations, such as email (SMTP), are waiting.
- Test every role. Create one test account per role, try each status change, then try what should be forbidden.
- Pick a cutover day. Make the sheet read-only, load the final rows and announce the link. Running both in parallel creates double entry.
- Improve it in the same chat, one consolidated change list at a time.
Inventory tracker
Build a private inventory tracker for [our two stockrooms]. Records: items (SKU, name, category, location, quantity, reorder level, supplier) and stock movements (item, change, reason: received, sold, damaged or adjusted, who, when). Quantity changes only through a movement, applied in one step so two people can never double-count. Views: items filtered by location and category, and a "below reorder level" list. Roles: staff record movements; managers edit items and reorder levels. Once I add email settings, email managers each morning with the items below reorder level. Load the attached inventory.csv as items.
Approvals
Build a purchase request tool for [a 30-person company]. Statuses: draft, submitted, approved, rejected, ordered, received. Requesters create and submit their own requests and see only those. Managers approve or reject requests up to [$2,000]; anything above goes to the finance director. Finance marks requests ordered and received. Every status change records who and when, and emails the requester once I add email settings. Only email addresses at [ourcompany.com] can register, and new accounts wait for admin approval.
Lightweight CRM
Build a simple CRM for [our four-person sales team]. Records: companies, contacts and deals (stage: lead, contacted, proposal, won or lost; value; owner; next step; next step date). Everyone sees all companies, but each person edits only their own deals. Views: my deals by stage, deals whose next step date has passed, and pipeline totals by stage. Keep a change log on deals. Load the attached contacts.xlsx as companies and contacts.
On the free Community plan, the first build is a lean version of the core flow, so it may skip the change log or the email step; ask for them in your next message. More patterns are in our prompt templates guide.
Logins, roles and a change log
The app runs its own accounts: sign-up and login with hashed passwords, sessions, roles and an admin area. Nothing is shared with other apps, which also means your team gets one more login. Ways to keep that tidy:
- Restrict who can register: only addresses at your company domain, with new accounts waiting for an admin to approve them and assign a role.
- Offer Google sign-in with your own Google OAuth credentials, entered under Integrations. There is no enterprise single sign-on (SAML).
- Offboard in one click: ask for a "deactivate" button that ends a person's access without deleting their history.
- Add a site password if even the login page should stay private. One shared password sits in front of every page once you set it under Integrations; until then the site stays open.
The change log is the feature spreadsheets never really had. Ask for an activity record on every change: who, which record, which field, old value, new value and when, shown on each record and as a feed for admins. It counts against your database capacity, so for busy tools ask a scheduled job to remove entries older than a period you choose. Password resets need your SMTP settings.
Bringing your existing data in
Attach your sheet as a CSV or XLSX file, up to 25 MB, and say clearly that the records should be loaded during the build. The builder changes live data only when you explicitly ask. Prepare the file first:
- One header row, one record per row, no merged cells, no totals rows.
- Values, not formulas: paste values into a copy before exporting.
- One date format throughout, ideally year-month-day.
- Status and category spelled consistently. Fix "Done" versus "done " now.
- One value per cell: split "red, blue" into separate rows or a linked list.
Load about 20 rows first, check them in the app, then load the rest. If you import regularly, for example a weekly supplier price list, ask for an import screen in the admin area that accepts a CSV, and test it on a small file. If duplicates slip in, ask in the chat to find and remove the exact duplicate records; the builder inspects the live rows before deleting anything.
Connecting other tools through their APIs
An internal tool earns its keep when it stops being an island. Any service with an API can be connected: your team chat, accounting software, a CRM, a shipping service. Each connection is built from that provider's current documentation, and you paste the credentials once under Integrations, never in the chat. Until you do, that feature stays inactive and the rest works.
Think about direction:
- Push: the app calls another tool when something happens, such as posting to a team channel when a request is approved.
- Pull: a scheduled job fetches data every 30 to 60 minutes, such as supplier stock levels.
- Receive: another tool calls your app's webhook address when something happens on its side.
Give the app its own API key with the narrowest permissions the provider allows, so you can revoke it without breaking anything else. If you are still choosing between this route and a low-code platform, our comparison of no-code, low-code and AI app builders sets out the trade-offs.
Daily digests and cleanups with scheduled jobs
Scheduled jobs handle work nobody should do by hand: a morning list of overdue requests, a weekly pipeline summary, closing requests untouched for 60 days, clearing expired records. They run on a fixed interval of 30 to 60 minutes, set at build time, and send email through your SMTP account.
There is no clock-time trigger. A "daily at 8:00" digest works by checking on every run and sending once 8:00 has passed, so it arrives within about an hour of that time. Schedules have no timezone of their own, so give the hour in UTC or state your offset in the prompt. Each run also handles a small batch, so a large cleanup spreads over several runs. Anything urgent, such as an approval request, should be sent the moment the record changes, not by a schedule.
Limits to know before you rely on it
Internal tools quietly become critical, so check these before your team depends on one:
- Capacity: data, files and bandwidth are capped per plan and enforced live. The Resources panel shows how full each is.
- Search: there is no free-text search across large tables. Filters match exact values, ranges and lists of options. A list of roughly 100 rows can be searched in the browser; beyond that, design fixed-option fields.
- Dashboards: summary counts are rate-limited per app, so keep a dashboard to a handful of totals rather than dozens of live tiles.
- Heavy processing: requests are short-lived, so long-running reports and bulk data crunching don't fit.
- Logins: no SSO or SAML; the app has its own accounts.
- Lifetime: free links are deleted after 30 days plus a week marked for deletion. A tool your team relies on belongs on a paid plan, from $7 a month.
- Portability: there is no code export. Ask for CSV exports of every record type and download them on a schedule you control.
And test permissions the way an auditor would: log in as each role and try to open records you shouldn't see. You are responsible for reviewing what the AI builds. If some of the people who need access are customers rather than colleagues, read how to build a client portal without code; for the bigger picture, start with what an AI app builder is.
Replace your first spreadsheet
Pick the sheet that causes the most messages, map its records, statuses and roles on one page, and paste the matching template. The product page explains how each app is isolated from every other, and the plans show how capacity and build speed grow with each tier.
Describe your tool in one message and get a live link: start free on Community, no card required.
F.A.Q.
