What you'll build
An intake form where anyone in your org registers an AI system before it goes live: what it does, what data it touches, how autonomous it is, and who owns it. The moment someone submits, Formaloo does two things automatically: calculates a numeric risk score from the answers, and generates a private, AI-written risk explanation that only your team sees. A compliance or AI governance reviewer then reads both, makes a real decision, and signs off, before the system is ever marked approved for use. Every registration, score, AI read, and decision lives in one auditable record.
When to use this
Your team keeps adopting AI tools (chat assistants, scoring models, automation agents) faster than anyone is tracking them, and there's no single place that lists what's in use.
Legal, security, or compliance has started asking "what AI systems do we actually have, and who approved them," and the honest answer right now is a scattered mix of Slack messages and spreadsheets.
You need a defensible record showing that every AI system went through a documented risk read and a named human sign-off before it touched real data or real decisions.
You want a risk score that isn't just a gut call. Combining a calculated number with an AI-generated written rationale gives reviewers two independent reads on the same submission.
You're preparing for an internal audit, a customer security questionnaire, or a regulatory requirement (like the EU AI Act's registration expectations) and need this documented before it becomes urgent.
Part 1 — Build the intake form
This is where every AI system enters the register. The fastest way to build it is Magic Create, since most of these fields are standard intake questions.
1. Open Magic Create: From your Formaloo homepage, click Magic Create. Describe the form in plain text.
2. Paste this prompt: "Create an AI system registration form. Public fields: name of the AI system or tool (short text), department that owns it (short text), business owner name (short text), business owner email (email), what the system does (long text), vendor or model powering it (short text), types of data it processes (multi-select dropdown: Public/non-sensitive, Internal business data, Personal data (PII), Special category data), how sensitive the most sensitive data is (dropdown: Public/non-sensitive, Internal business data, Personal data (PII), Special category data — health, biometric, etc.), whether it makes or influences a decision about an individual (yes/no), a description of that decision (long text), how much human oversight happens before its output is acted on (dropdown: Suggests only, Human approves each action, Acts automatically within limits, Fully autonomous), who or what it reaches (dropdown: Single team, Multiple departments, All employees, External customers/public), deployment stage (dropdown: Planned, Pilot, Production), and a confirmation checkbox that the information is accurate. Admin-only fields: risk tier (dropdown: Low, Medium, High), review status (dropdown: Pending review, Under review, Changes requested, Approved for use, Rejected), reviewer (assignee field), reviewer decision notes (long text), review sign-off date (date), internal notes (long text)."
3. Click Create: Magic Create builds the form and generates field IDs for you.
💡 Want internal fields, like status, assignee, or scores, invisible to the person filling out the form? What are admin-only fields and how they help is the foundational guide to that mechanism.
4. Verify your form: Your form should look like this. Magic Create will have generated most of it, so verify each field and field ID matches exactly.
Field (question form) | Field ID | Type |
What's the name of the AI system or tool? |
| Short text |
Which team or department owns this system? |
| Short text |
Who is the business owner for this AI system? |
| Short text |
What's the business owner's email address? |
| |
What does this AI system do? |
| Long text |
Which vendor or model powers it? |
| Short text |
What type of data does it process? |
| Multi-select dropdown |
How sensitive is the most sensitive data it touches? |
| Dropdown |
Does this system make or influence a decision about an individual? |
| Yes/No |
Describe the decision it makes or influences |
| Long text |
How much human oversight happens before its output is acted on? |
| Dropdown |
Who or what does this system reach? |
| Dropdown |
What stage is this system at? |
| Dropdown |
I confirm this information is accurate and understand this system can't go live without a completed risk review |
| Yes/No |
Risk tier |
| Dropdown (admin-only) |
Review status |
| Dropdown (admin-only) |
Reviewer |
| Assignee field (admin-only) |
Reviewer decision notes |
| Long text (admin-only) |
Review sign-off date |
| Date (admin-only) |
Internal notes |
| Long text (admin-only) |
💡 Want to know exactly what the Assignee field can do, assign to a person, a team, or either? What is the Assignee field in Formaloo and how to use it is the atomic reference for that field type. The Assignee field only works with workspace members and teams, so your Reviewer here should be someone on your compliance or AI governance team, not an external contact.
Part 2 — Score risk automatically
Four hidden variables turn the submitter's choices into numbers, and a formula adds them up into a single risk score. None of this shows up on the form itself.
💡 Want your form to show, hide, skip, or calculate based on what someone just answered? What is logic in Formaloo is the foundational guide to logic and calculation in Formaloo.
1. Open Advanced logic: In the form settings panel on the right side of the form editor, click Advanced logic.
2. Add four numeric variables: In the Variables tab, create four Formula-type variables: data_sensitivity_score, decision_impact_score, autonomy_score, and scale_score. Leave their default values at 0 for now, they'll be set by logic below.
3. Add the risk score variable: Create a fifth Formula variable, risk_score, with the default formula data_sensitivity_score + decision_impact_score + autonomy_score + scale_score. This recalculates automatically every time the four inputs change.
4. Open Magic Logic: Navigate to the Logic tab and click Magic Logic in the top right corner.
5. Paste this prompt: "When Data sensitivity equals Public/non-sensitive, set Data sensitivity score to 0. When it equals Internal business data, set it to 1. When it equals Personal data (PII), set it to 2. When it equals Special category data, set it to 3. When Does this system make or influence a decision about an individual equals Yes, show Describe the decision and set Decision impact score to 2. When it equals No, keep Describe the decision hidden and set Decision impact score to 0. When How much human oversight happens equals Suggests only, set Autonomy score to 0. When it equals Human approves each action, set it to 1. When it equals Acts automatically within limits, set it to 2. When it equals Fully autonomous, set it to 3. When Who or what does this system reach equals Single team, set Scale score to 0. When it equals Multiple departments, set it to 1. When it equals All employees, set it to 2. When it equals External customers/public, set it to 3. When Risk score is between 0 and 3, set Risk tier to Low. When Risk score is between 4 and 7, set Risk tier to Medium. When Risk score is between 8 and 12, set Risk tier to High. When I confirm this information is accurate equals No, show a warning message."
6. Review the generated rules: Approve each rule, or redo any that don't match. Once approved, Formaloo applies them for a final review.
7. Save your logic: Click Save in the top right corner of the Logic panel.
Part 3 — Add the AI risk read
This is what makes the risk assessment genuinely AI-based rather than just a weighted score. Formaloo's AI Analysis field reads the submission the moment it comes in and writes a private risk explanation, stored as real row data, that the submitter never sees.
1. Open the Add field panel: In your form editor, click Add field and find AI Analysis.
2. Add it to your form: Click AI Analysis to drop it onto the canvas. It arrives admin-only by default, and that can't be turned off, there's no setting anywhere that exposes it to the person filling out the form.
3. Write the prompt: Open the field's prompt box and use the @ menu to pipe in the risk-relevant answers: "Based on @data_sensitivity, @impacts_individuals, @decision_description, @autonomy_level, @scale_reach, and @vendor_model, write a short risk assessment of this AI system. Note any specific concerns a compliance reviewer should look into before approving it. Keep it to one short paragraph."
4. Set a clear field ID: Name it ai_risk_analysis so you can reference it in emails and the PDF later. Give it a title like "AI risk analysis" so it's a clear column header in your Responses table.
5. Publish your form: Click Publish in the island bar at the top of the editor to make the field live.
📖 The AI Analysis field runs automatically on every submission alongside your risk score, and its output is fully supported in answer piping wherever piping already works. See how to generate AI analysis in a field without showing it to form respondents for the full field reference, including how routing and error states work.
Part 4 — Set up email notifications
Four templates keep everyone informed without anyone having to check the register manually.
💡 Want to send branded, personalized emails instead of Formaloo's plain default notification? How to create and send custom email templates is the foundational guide to building and sending custom email templates.
1. Open Custom Email Templates: Click your profile icon, go to Apps and Integrations, and open Custom Email Templates. Click Add New Template.
2. Build the registration confirmation: Clear the body, add an AI block, and enter this prompt: "Write a short, calm confirmation to the business owner who just registered an AI system. Confirm you've received the registration for @ai_system_name in @department. State plainly that it is now pending risk review and cannot go into production until a reviewer approves it. Mention the reference number AIGR-@rowid. Keep it factual, 3-4 sentences." Set the subject to Your AI system "@ai_system_name" has been registered for review, name the template, and save.
3. Build the reviewer notification: Add a second template. Prompt: "Write a brief internal notification to the AI governance team. Open with @ai_system_name, @department, and @risk_tier. Include the AI-generated risk read from @ai_risk_analysis as its own block. State the numeric risk score. End with a direct call to review and set a decision." Subject: New AI system to review: @ai_system_name (@risk_tier risk).
4. Build the decision update: Add a third template. Prompt: "Write a clear status update to the business owner. State the new review status, @review_status, plainly and early. If approved, confirm the system is cleared for use and note the sign-off date, @signoff_date. If changes are requested or it's rejected, reference @reviewer_notes so they know what to address." Subject: Update on your AI system registration: @ai_system_name.
5. Build the high-risk escalation: Add a fourth template. Prompt: "Write a short, direct escalation to leadership. State that @ai_system_name in @department has been scored High risk. Summarize the reason using @ai_risk_analysis. Make clear this requires senior review before approval. Under 100 words." Subject: High-risk AI system flagged: @ai_system_name.
6. Connect the triggers: In Advanced logic, add rules so the registration confirmation and reviewer notification both fire on submit, the decision update fires when Review status changes, and the high-risk escalation fires when Risk tier is set to High.
📖 For routing rules like these, see how to send and receive conditional email notifications.
Part 5 — Build the PDF template
Every reviewed system gets a self-contained record: the submitted details, the numeric risk score, the AI risk read, and the reviewer's decision, in one document.
💡 Want every form submission to generate a polished, branded document automatically? How to create PDF templates to turn responses into documents is the foundational guide to building a PDF template from a submission.
1. Open Custom PDF Template: Click your profile icon, go to Apps and Integrations, and open Custom PDF Template. Click Add New Template.
2. Switch to HTML view: In the template editor, switch to the HTML view.
3. Paste the template code: Paste the following code in full. It uses @field_id piping to pull in the system details, the calculated risk tier, the AI risk read, and the reviewer's sign-off, plus @rowid for a unique reference number instead of a separate tracking field.
<div style="background:#ffffff; max-width:760px; margin:0 auto; padding:60px 72px; font-family:'Inter', -apple-system, BlinkMacSystemFont, sans-serif; color:#1a1a1a;"> <!-- Header --> <div style="display:flex; justify-content:space-between; align-items:flex-start; border-bottom:1px solid #eaeaea; padding-bottom:20px; margin-bottom:32px;"> <div> <div style="font-size:20px; font-weight:600; letter-spacing:-0.01em;">AI system risk review record</div> <div style="font-size:12px; color:#999; margin-top:4px;">Reference: AIGR-@rowid</div> </div> <div style="text-align:right; font-size:12px; color:#999;"> Registered @created_at </div> </div> <!-- System details --> <div style="font-size:10px; text-transform:uppercase; letter-spacing:0.08em; color:#aaa; margin-bottom:12px;">System details</div> <div style="display:grid; grid-template-columns:1fr 1fr; gap:0 24px; margin-bottom:28px;"> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">AI system or tool</div> <div style="font-size:14px; color:#1a1a1a;">@ai_system_name</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Department</div> <div style="font-size:14px; color:#1a1a1a;">@department</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Business owner</div> <div style="font-size:14px; color:#1a1a1a;">@business_owner_name</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Owner email</div> <div style="font-size:14px; color:#1a1a1a;">@business_owner_email</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Vendor / model</div> <div style="font-size:14px; color:#1a1a1a;">@vendor_model</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Deployment stage</div> <div style="font-size:14px; color:#1a1a1a;">@deployment_stage</div> </div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0; margin-bottom:28px;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">What this system does</div> <div style="font-size:14px; color:#1a1a1a; line-height:1.6;">@system_purpose</div> </div> <!-- Risk assessment --> <div style="font-size:10px; text-transform:uppercase; letter-spacing:0.08em; color:#aaa; margin-bottom:12px;">Risk assessment</div> <div style="display:grid; grid-template-columns:1fr 1fr; gap:0 24px; margin-bottom:16px;"> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Data sensitivity</div> <div style="font-size:14px; color:#1a1a1a;">@data_sensitivity</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Risk tier</div> <div style="font-size:14px; color:#1a1a1a; font-weight:600;">@risk_tier</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Autonomy level</div> <div style="font-size:14px; color:#1a1a1a;">@autonomy_level</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Reach</div> <div style="font-size:14px; color:#1a1a1a;">@scale_reach</div> </div> </div> <div style="background:#f9f9f9; border-left:3px solid #d8d8d8; border-radius:2px; padding:16px 18px; margin-bottom:28px;"> <div style="font-size:10px; text-transform:uppercase; letter-spacing:0.08em; color:#999; margin-bottom:8px;">AI-generated risk read</div> <div style="font-size:13px; color:#333; line-height:1.7;">@ai_risk_analysis</div> <div style="font-size:11px; color:#aaa; margin-top:10px; font-style:italic;">Generated automatically from the submitted answers. For reference alongside the reviewer's own judgment, not a substitute for it.</div> </div> <!-- Decision impact --> <div style="font-size:10px; text-transform:uppercase; letter-spacing:0.08em; color:#aaa; margin-bottom:12px;">Decision impact</div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0; margin-bottom:28px;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Does this system make or influence a decision about an individual?</div> <div style="font-size:14px; color:#1a1a1a; margin-bottom:8px;">@impacts_individuals</div> <div style="font-size:11px; color:#999; margin-bottom:3px;">Decision described</div> <div style="font-size:14px; color:#1a1a1a; line-height:1.6;">@decision_description</div> </div> <!-- Review and sign-off --> <div style="font-size:10px; text-transform:uppercase; letter-spacing:0.08em; color:#aaa; margin-bottom:12px;">Review & sign-off</div> <div style="display:grid; grid-template-columns:1fr 1fr; gap:0 24px; margin-bottom:8px;"> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Review status</div> <div style="font-size:14px; color:#1a1a1a; font-weight:600;">@review_status</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Reviewer</div> <div style="font-size:14px; color:#1a1a1a;">@reviewer</div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Sign-off date</div> <div style="font-size:14px; color:#1a1a1a;">@signoff_date</div> </div> </div> <div style="padding:10px 0; border-bottom:1px solid #f0f0f0; margin-bottom:36px;"> <div style="font-size:11px; color:#999; margin-bottom:3px;">Reviewer decision notes</div> <div style="font-size:14px; color:#1a1a1a; line-height:1.6;">@reviewer_notes</div> </div> <!-- Footer --> <div style="display:flex; justify-content:space-between; border-top:1px solid #eaeaea; padding-top:16px; font-size:11px; color:#999;"> <div>Confidential — internal AI governance record. Not for external distribution.</div> <div>[Organization name]</div> </div> </div>
4. Name and save: Give the template a name like "AI system risk review record" and click Save.
5. Attach it to the reviewer notification email: Open the reviewer notification template from Part 4, attach this PDF template to it, so the reviewer gets the full record alongside the email.
📖 For attaching a generated PDF to an email notification, see how to send custom PDFs with email notifications.
Part 6 — Set up the review portal
This is a fully internal workflow. Business owners registering systems and the AI governance team reviewing them are both workspace members, so every page here uses internal access, not external portal roles.
1. Start from Dashboard: Create a new project and start from Dashboard so you have an empty canvas to build these pages on, then connect your registration form to it.
2. Build "Register an AI system": Add your form as a page. Access: internal users, all workspace members.
3. Build "My registered systems": Add a Table data block filtered to business_owner_email equal to the logged-in user, sorted newest first. In Edit Mode, click Options, scroll to Manage Access, and turn on Allow users to view only their data on the business_owner_email field.
💡 Want each logged-in user to see only their own submissions, not everyone else's? How to let users view and edit their own data in your portal is the foundational guide to that access restriction.
4. Build "All AI systems": Add a Kanban board grouped by Review status. Access: internal users, AI Governance team only.
5. Build "My assigned reviews": Add a Table filtered to reviewer equal to the logged-in user, newest first. Access: internal users, AI Governance team.
6. Build the status queues: Add four more Tables for the AI Governance team: "High risk queue" (Risk tier = High, oldest first), "Pending review" (Review status = Pending review, oldest first), "Approved systems" (Review status = Approved for use, newest first), and "Changes requested & rejected" (Review status = Changes requested or Rejected, newest first).
7. Restrict the AI Governance team's pages: For each page in steps 4-6, click the three-dot menu next to the page name, select Access, and under internal users, restrict access to the AI Governance team specifically, rather than leaving it open to every workspace member.
💡 Want a whole page in your portal visible only to a specific role, not just specific data within a page? How to restrict users' access to pages in your portal covers page-level access restriction.
8. Add a Reports group: Add two Chart pages, "Risk distribution" (bar chart grouped by Risk tier) and "Systems by department" (bar chart grouped by Department). Access: internal users, AI Governance team.
9. Share your portal: Once every page and access level is set, share the portal link with your workspace so business owners and the AI Governance team can start using it.
📖 For a deeper narrative report layered on top of these charts, see Formaloo AI Analyze: the report maker that turns your data into charts and insights.
What you now have
A single register where every AI system in your org gets recorded, scored, and reviewed the same way, instead of living in scattered spreadsheets or Slack threads. Every submission gets an automatic numeric risk score and an independent AI-written risk read, so reviewers start with two informed opinions instead of a blank page. Nothing gets marked approved for use until a named human reviewer actually makes that call, and every registration, score, AI read, and decision is captured in one auditable PDF record. When someone eventually asks what AI you're running and who signed off on it, you have a real answer.
What's next
Route the highest-risk systems to a dedicated escalation channel Once your risk score and AI risk read are stored on every submission, you can layer in more conditional routing, like a Slack notification alongside the email, for anything scored High. → How to send and receive conditional email notifications
Anonymize old registrations once systems are retired Compliance records don't need to hold sensitive system details indefinitely. You can automatically anonymize a registration's sensitive fields after a retention period. → How to automatically anonymize records after form submission
See a full AI-scored workflow end to end For a complete example of AI scoring driving hot/cold routing and conditional emails in a different use case, this walks through the same pattern in more depth. → How to build an AI-powered lead qualification system
Ready-to-use templates
Don't build this from scratch, we've already put it together for you.
AI lead qualification & scoring form — Scores incoming leads with AI and routes hot and cold leads differently. The same scoring-plus-AI-read pattern used here for lead quality maps directly onto scoring AI system risk.
Scholarship & grant application with scoring and approval — A multi-reviewer scoring workflow with auto-calculated scores and approval/rejection emails. Swap grant criteria for risk criteria and the approval gate works the same way.
Employee request workflow — Internal request routing with status tracking and reviewer assignment. A close structural match for any internal registration-and-approval process like this one.
Learn more how-tos
See AI scoring drive a full workflow, from intake to routing This walks through the same pairing of an AI read with automated routing, applied to lead qualification instead of risk. → How to build an AI-powered lead qualification system
Screen submissions with AI before a human ever looks Another workflow where AI reads a submission and produces a private read before your team acts on it, useful context for framing your own AI Analysis prompt. → How to build an AI-powered job application pipeline with candidate screening
See a request-to-decision gate structured a different way If you want to compare this single-reviewer sign-off against a two-stage approval chain, this covers a workflow requiring sign-off from two separate approvers in sequence. → How to build a dual-approval request workflow

