Low-code app builders
Build internal apps with forms, tables and logic in low-code builders.
20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.
- Typical applications
- Power Apps · Retool · AppSheet
- Class GUI-need label
G3· GUI-only
Task proposals · 20
Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.
R02.08.01.02-T01 Power Apps canvas: inventory request app on Dataverse with validation
Original instruction
In the sandbox Power Platform environment 'CUA-Test', build canvas app 'Stock Requests' on Dataverse table cr_request (item, qty, site, status). Screen 1: gallery filtered by a Status dropdown; Screen 2: edit form where qty must be 1–50 (show 'Qty 1-50' error and block submit) and new rows default to status 'Pending'. Save and publish.
- Platforms
web· Any OS (web)- Applications
- Power Apps
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Playwright plays the published app with a test user: creates 3 requests (qty 0, 51, 12), filters by status, and checks Dataverse rows via Web API (only the valid row, status Pending). Version history must show Studio publishes; pac canvas pack/unpack uploads are rejected. The agent's test user has no pac CLI profile or app registration, so Power Platform/Dataverse API tokens are withheld and edits can only come from the Studio session.
Proposed partial credit
20% app published with two screens; 30% gallery filter; 30% qty validation blocks invalid; 20% default status.
R02.08.01.02-T02 Retool: dependent country/state form writing to Postgres
Original instruction
In self-hosted Retool, create app 'Supplier Intake' with a form: name (required), country select (from table countries), state select that lists only states of the chosen country and is hidden for countries without states, and email with format validation. Submit inserts into suppliers in the 'cua_pg' resource and resets the form.
- Platforms
web· Any OS (web)- Applications
- Retool
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Playwright runs 6 submissions (US/CA/Japan, invalid email, missing name) and checks suppliers rows and visible state options per country. Retool audit log must show the app edited in the editor; apps created through the import/API endpoint are flagged.
Proposed partial credit
25% form fields and required rules; 35% dependent state options; 20% email validation; 20% insert and reset.
R02.08.01.02-T03 Retool: ticket triage dashboard with bulk assign and audit row
Original instruction
Build Retool app 'Triage' over Postgres table tickets: a table with server-side pagination (50/page), filters for priority and age > N days, multi-row selection, and a 'Assign to…' button opening a modal with an agent dropdown and confirm. Confirm updates assignee for all selected rows and inserts one row per ticket into ticket_audit(ticket_id, old, new, by).
- Platforms
web· Any OS (web)- Applications
- Retool
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickdrag· Drag & droptype· Text & forms- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Playwright filters (priority=High, age>7), selects 12 rows across two pages, assigns to 'lee', and checks tickets and ticket_audit rows exactly; cancelling the modal must change nothing. Network log confirms server-side pagination (LIMIT/OFFSET query). Editor audit log required.
Proposed partial credit
20% paginated table; 20% filters; 40% bulk assign updates exact rows; 20% audit rows and cancel path.
R02.08.01.02-T04 AppSheet: field inspection app from Google Sheet with slices and actions
Original instruction
From the sandbox Google Sheet fixtures/inspections (Sites, Inspections, Defects), create AppSheet app 'Site Inspect': a Sites view, an Inspections form with Site ref and photo, a slice 'Open Defects' (status != Closed), and an action 'Close defect' that sets status=Closed and closed_at=NOW(). Deploy in prototype mode.
- Platforms
web· Any OS (web)- Applications
- AppSheet · Google Sheets
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
multiapp· Multi-app- Proposed difficulty
- 3 / 5
Proposed verifier
Grader exports the app definition through the account's AppSheet editor session and checks views, slice filter, action formula; then a Playwright test user closes 2 defects and the sheet rows must show status Closed with timestamps. Sheet edits made directly in Google Sheets for the test rows are detected via revision history.
Proposed partial credit
25% tables and refs; 25% slice correct; 30% action updates sheet; 20% form with photo column.
R02.08.01.02-T05 AppSheet: per-user security filters and role-based edit rights
Original instruction
In the existing AppSheet app 'Expenses' (fixtures/expenses sheet), make employees see only rows where Owner = USEREMAIL(), managers (listed in sheet Managers) see their team's rows, and only managers can change Status. Add a format rule showing amounts over 1000 in red. Test with the provided test accounts.
- Platforms
web· Any OS (web)- Applications
- AppSheet
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Grader logs in as 3 test users via the app URL and compares visible row IDs to expected sets, attempts Status edits (allowed only for managers), and reads the format rule from the app definition. Security filter expressions are evaluated against hidden extra users. AppSheet has no API for editing app definitions, and the agent account has no AppSheet API access key or Drive edit rights on the backing sheet.
Proposed partial credit
35% employee filter; 25% manager team filter; 25% status edit permission; 15% format rule.
R02.08.01.02-T06 Appsmith: product admin with server-side search and image upload
Original instruction
In self-hosted Appsmith, build 'Catalog Admin' over MySQL products (10k rows): table with server-side search on name/SKU and pagination, an edit modal for price (> 0, two decimals) and stock (int ≥ 0), and an image upload that stores to the MinIO bucket 'catalog' and saves the object URL in products.image_url.
- Platforms
web· Any OS (web)- Applications
- Appsmith · MinIO
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP08· App/system state- Conditions
multiapp· Multi-app- Proposed difficulty
- 4 / 5
Proposed verifier
Playwright searches SKU 'ZX-4471' (row 8,812), edits price/stock with invalid then valid values, uploads fixtures/img.png; checks DB row, object exists in MinIO with same md5, and query log shows LIKE/LIMIT queries. Git-sync imports of app JSON are disabled and detected in the audit trail.
Proposed partial credit
25% server-side search finds deep row; 25% validation rules; 30% upload stored and linked; 20% pagination.
R02.08.01.02-T07 Budibase: two-role purchase approval app with automation
Original instruction
In Budibase, build app 'PO Approvals' with table purchase_orders (amount, vendor, status, approver). Role Basic can create and see own POs; role Power can approve/reject pending POs over 0 with a comment. Add an automation: when a PO is approved and amount > 5000, POST to webhook http://mock:9000/finance with id and amount.
- Platforms
web· Any OS (web)- Applications
- Budibase
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Playwright signs in as requester and approver test users: requester creates 3 POs, cannot see Approve; approver approves two (one > 5000). Checks table rows, role screen access, and mock webhook receives exactly one POST with correct JSON. App must be published from the builder. No Budibase public API key is generated for the agent user and CouchDB is firewalled from its VM, so the app can only be built in the Budibase builder.
Proposed partial credit
25% table and create screen; 30% role-based visibility; 25% approve/reject flow; 20% automation webhook.
R02.08.01.02-T08 ToolJet: sales KPI dashboard with filtered chart queries
Original instruction
In ToolJet, build 'Sales KPIs' over Postgres sales: date-range picker (default last 30 days relative to 2026-09-30), region multiselect, three stat tiles (revenue, orders, AOV), a monthly revenue bar chart and a top-10 products table, all reacting to the filters.
- Platforms
web· Any OS (web)- Applications
- ToolJet
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP03· Visual layout- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Playwright sets 3 filter combinations and reads tile text and chart data (ToolJet exposes chart data in DOM/plotly JSON); values must equal SQL ground truth to the cent. Query definitions inspected for parameterised filters. The agent has no ToolJet API token, ToolJet's Postgres is firewalled from its VM, and app JSON import is withheld from its role, so components are built in the editor.
Proposed partial credit
30% tiles correct; 30% chart series correct; 20% top-10 table; 20% filters wired to all components.
R02.08.01.02-T09 Power Apps: fix delegation so search reaches row 8,812 of 12,000
Original instruction
Canvas app 'Asset Finder' (sandbox env) searches Dataverse table cr_asset with Filter(... , Search(...)) and only returns hits among the first 500 rows (delegation warning). Rewrite the gallery and search formulas to be delegable so tags anywhere in 12,000 rows are found, keeping the same UI, then publish.
- Platforms
web· Any OS (web)- Applications
- Power Apps
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Playwright searches 5 hidden tags at rows > 2,000 and expects them listed; App Checker export must show zero delegation warnings. Data row limit is left at 500 (changing it to 2000 does not pass). Publish must come from Studio. The agent's test user has no pac CLI profile or app registration, so Power Platform/Dataverse API tokens are withheld and edits can only come from the Studio session.
Proposed partial credit
30% delegation warnings cleared; 50% hidden deep searches return rows; 20% UI unchanged and published.
R02.08.01.02-T10 Power Apps: responsive containers for desktop and phone layouts
Original instruction
Canvas app 'Visitor Log' has absolute-positioned controls that overlap on phones. Rebuild Screen1 with horizontal/vertical containers so at 1366×768 the form and list sit side by side, and at 390×844 they stack with the form first; no control may overflow the viewport and all text must stay ≥ 12 pt.
- Platforms
web· Any OS (web)- Applications
- Power Apps
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
drag· Drag & dropclick· Point & clickgeom· Precise geometryvis· Visual judgment- Work product
WP03· Visual layout- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Playwright renders the published app at both viewports and reads control bounding boxes: no overlaps, all inside viewport, ordering as specified, font sizes from computed styles. Screen tree export must show container controls. The agent's test user has no pac CLI profile or app registration, so Power Platform/Dataverse API tokens are withheld and edits can only come from the Studio session.
Proposed partial credit
30% containers used; 30% desktop layout; 30% phone layout; 10% font-size floor.
R02.08.01.02-T11 Retool: repair app broken by column rename migration
Original instruction
After migration 0042 renamed customers.fullname to display_name and orders.amt to amount_cents (integer cents), Retool app 'Accounts' shows errors in 4 queries and 3 components. Fix the queries and bindings so the table, the detail panel and the revenue stat show correct values in dollars.
- Platforms
web· Any OS (web)- Applications
- Retool
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Playwright loads the app: zero query errors in the debug panel, table column values equal DB, revenue stat equals SUM(amount_cents)/100 formatted $#,##0.00. Editor audit log required; app JSON imports rejected.
Proposed partial credit
40% queries fixed; 30% component bindings; 30% cents-to-dollars conversion.
R02.08.01.02-T12 Power Apps + Power Automate: equipment loan approval round-trip
Original instruction
Extend canvas app 'Equipment Loans' so Submit calls a new cloud flow that starts an Approvals request to the item's owner (from cr_item.owner), waits, and writes Approved/Rejected plus the approver comment back to cr_loan; the app must show the status live via a Refresh timer. Use the sandbox environment only.
- Platforms
web· Any OS (web)- Applications
- Power Apps · Power Automate · Dataverse
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP08· App/system state- Conditions
multiapp· Multi-applong· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
Test harness submits two loans, responds to approvals as owner test accounts (approve one with comment, reject one), and checks cr_loan status/comment and that the app shows them within 30 s. Flow definition is exported and must contain the Approvals action bound to the app trigger. The agent account has no pac CLI profile or app registration, so Dataverse/Flow API tokens are withheld and both must be built in the designers.
Proposed partial credit
25% flow triggered from app; 25% approval routed to correct owner; 30% write-back fields; 20% live status in app.
R02.08.01.02-T13 Retool: multi-page app with URL parameters and role-gated page
Original instruction
Build Retool app 'Fleet' with pages Vehicles (table), Vehicle (detail by ?id=) and Admin. Clicking a row navigates to Vehicle with the id in the URL; deep-linking to /Vehicle?id=73 works on reload. Admin is visible only to users in Retool group 'fleet-admins' and lets them retire a vehicle (status=retired, confirmation required).
- Platforms
web· Any OS (web)- Applications
- Retool
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
risk· Irreversible/risky- Proposed difficulty
- 4 / 5
Proposed verifier
Playwright as two test users: deep link loads correct record; navigation sets URL; non-admin cannot see or reach Admin (direct URL shows no data); admin retires vehicle 73 after confirm and the row changes, cancel changes nothing. No Retool API token or source-control sync is configured for the agent, and app JSON import is withheld, so pages and permissions must be set in the Retool editor.
Proposed partial credit
25% page navigation with URL param; 20% deep link on reload; 30% role gating; 25% confirmed retire action.
R02.08.01.02-T14 AppSheet: virtual columns and overdue format rules for task tracker
Original instruction
In AppSheet app 'Maintenance', add virtual column DaysOpen = HOUR(NOW()-[Opened])/24 rounded down, virtual column Overdue = DaysOpen > SLA_days (from the Priority table via ref), a format rule showing Overdue rows red with a warning icon, and a deck view sorted by Overdue then DaysOpen descending.
- Platforms
web· Any OS (web)- Applications
- AppSheet
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Grader reads the app definition and evaluates the virtual column expressions against a frozen clock on 30 hidden rows; Playwright screenshots the deck and checks red rows by element style and order of cards. AppSheet has no API for editing app definitions, and the agent account has no AppSheet API access key or Drive edit rights on the backing sheet.
Proposed partial credit
30% DaysOpen; 30% Overdue via ref; 20% format rule; 20% deck sort order.
R02.08.01.02-T15 Mendix Studio Pro: order app with domain model and microflow totals
Original instruction
In Mendix Studio Pro 10 (local run), model entities Order (number, status) and OrderLine (qty, unit_price) with 1-* association, overview and edit pages, and a microflow that recalculates Order.total on OrderLine commit and blocks commit when qty ≤ 0 with a validation message. Run the app locally on port 8080.
- Platforms
win· Windows- Applications
- Mendix Studio Pro
- Interfaces
desk· Desktop GUIbrow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
drag· Drag & dropclick· Point & clicktype· Text & forms- Work product
WP06· Code/engineering- Conditions
long· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
Playwright drives the running app: creates an order with 3 lines, edits one, tries qty 0; checks totals shown and DB (HSQLDB export) values. Project .mpr inspected via Mendix Model SDK read-only for entities, association and microflow; the agent gets no Mendix PAT (no Model SDK writes) and a file-system audit log flags .mpr writes not made by Studio Pro.
Proposed partial credit
25% domain model; 20% pages; 35% microflow totals; 20% validation blocks bad qty.
R02.08.01.02-T16 Power Apps model-driven: table, business rule and custom view
Original instruction
In the sandbox environment, create Dataverse table 'Site Visit' (date, site lookup, outcome choice, follow-up date), a business rule making follow-up date required and visible only when outcome = 'Needs follow-up', a model-driven app 'Field Ops' with a main form and a view 'My open visits' (owner = current user, outcome ≠ Closed, sorted by date).
- Platforms
web· Any OS (web)- Applications
- Power Apps · Dataverse
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Solution export is inspected for table columns, business rule conditions and view FetchXML; Playwright as test user toggles outcome and checks follow-up field visibility/required state, then verifies view contents vs Web API query. The agent's test user has no pac CLI profile or app registration, so Power Platform/Dataverse API tokens are withheld and edits can only come from the Studio session.
Proposed partial credit
25% table schema; 30% business rule behaviour; 25% view filter/sort; 20% app with form published.
R02.08.01.02-T17 Power Apps: accessibility pass to zero serious axe violations
Original instruction
Canvas app 'Benefits Enrollment' fails accessibility review. In Studio, give every input an AccessibleLabel, fix the tab order to match fixtures/tab_order.txt, raise contrast of grey labels to ≥ 4.5:1, and give icon buttons descriptive labels. Republish.
- Platforms
web· Any OS (web)- Applications
- Power Apps
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formskey· Shortcuts- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Playwright runs axe-core on each screen: zero serious/critical violations; tab-key traversal order recorded and compared to tab_order.txt exactly; contrast computed from rendered colours. The agent's test user has no pac CLI profile or app registration, so Power Platform/Dataverse API tokens are withheld and edits can only come from the Studio session.
Proposed partial credit
30% labels; 30% tab order exact; 25% contrast; 15% icon button names.
R02.08.01.02-T18 Budibase: row-created automation posting to webhook with retries
Original instruction
In Budibase app 'Incidents', add an automation: on row created in table incidents with severity in (P1, P2), POST {id,title,severity} to http://mock:9000/pager; if the response is not 2xx, retry up to 3 times and then set row.notify_status='failed', else 'sent'.
- Platforms
web· Any OS (web)- Applications
- Budibase
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Grader inserts 4 rows through the app UI (P1, P3, P2 while mock returns 500, P2 after recovery) and checks webhook call counts and payloads plus notify_status values. Automation definition exported from the builder. No Budibase public API key is generated for the agent user and CouchDB is firewalled from its VM, so the app can only be built in the Budibase builder.
Proposed partial credit
30% trigger and severity filter; 30% payload correct; 40% retry and status outcomes.
R02.08.01.02-T19 Control pair of T03: triage tool as a coded Flask app
Original instruction
Control pair of T03. Without a low-code builder, implement the same Triage features (paginated filtered ticket table, multi-select bulk assign with confirmation, audit rows) as a Flask app in app/ against the same Postgres database, runnable with 'flask run'.
- Platforms
lin· Linux- Applications
- Flask · Postgres
- Interfaces
term· Terminalapi· API/SDK- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commandstype· Text & forms- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Same Playwright scenario as T03 adapted to selectors listed in app/SELECTORS.json; same DB assertions. Reported as the coded baseline against the Retool GUI route.
Proposed partial credit
20% table with filters; 20% pagination; 40% bulk assign exact rows; 20% audit and cancel path.
R02.08.01.02-T20 Appsmith: offline-tolerant stock count form with conflict handling
Original instruction
Build Appsmith app 'Cycle Count' for warehouse tablets: scan field (text input), item lookup by barcode, counted qty input, and Save that writes to counts with the row's version; if another user changed the item since load (version mismatch), show a conflict modal offering 'Keep mine' or 'Reload' and act accordingly.
- Platforms
web· Any OS (web)- Applications
- Appsmith
- Interfaces
brow· Browser- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
hidden· Hidden/stale state- Proposed difficulty
- 4 / 5
Proposed verifier
Two Playwright sessions edit the same item: second save must show the modal; 'Keep mine' writes with incremented version, 'Reload' shows the fresh value and writes nothing. Unknown barcode shows 'Not found'. DB rows and version numbers checked exactly. The agent gets no Appsmith API key, Git-sync remote or database credentials, so widgets, queries and the conflict logic must be built in the Appsmith editor's browser session.
Proposed partial credit
20% lookup by barcode; 30% versioned save; 35% conflict modal both branches; 15% not-found handling.
Mapped research references
No benchmark reference is assigned to this class in the current mapping.