How-Tos
Step-by-step recipes for every common task in the CRM.
How-Tos
Exact clicks for the tasks teams run every week. Where a recipe can be done with an assistant prompt, the prompt is included — just copy-paste.
Opportunities & deals
How to log a new RFP
- Open the ANC workspace app (top-left switcher — not "Standard")
- Sidebar → Deals → + New
- Set
company(search first — don't create a duplicate) - Set
stage = PROPOSAL,bidStatus = RFP_RECEIVED - Fill
proposalDueDate,businessUnit,league,accountExecutive - Save
Assistant shortcut:
log a new RFP: Louisville Athletics, TECHNOLOGY, due April 30, AE [name]How to move a deal through the pipeline
Open Bid Tracker (Kanban) → drag the card between columns. The flow is:
RFP_RECEIVED → SCOPING → BID_SUBMITTED → SHORTLISTED → WON
↘ LOST / NO_BIDHow to mark pricing complete
- Open the Opportunity
- Toggle
pricingComplete = TRUE pricingCompleteDateauto-stamps to now
Why it matters: The Estimation & Proposals view groups by this flag — the proposal team uses it to see what's ready to send.
How to record per-year revenue
Two options:
Option A (simple): Fill flat fields directly — revenue2026, margin2026, revenue2027, margin2027. Dashboard widgets read these.
Option B (detailed): Add child opportunityRevenueSplit records with fiscalYear, allocatedAmount, splitType (INSTALL/SERVICE/LICENSING/OTHER). Used for deals with mid-year splits.
Pick A for standard deals. Pick B when accounting needs the breakdown.
How to log team allocations (Hankook pattern)
For advertising deals that spread across multiple teams:
- Open the Opportunity (e.g., "Hankook Tire - MLB 2024")
- Click the Team Allocations tab
- + New Allocation — set
team(Company),fiscalYear,revenue,cost,margin - Repeat for each team
See Team Allocations for the data model.
How to find overdue deals
Assistant:
which deals have proposalDueDate in the past and bidStatus is not WON or LOSTManual: Open Proposal Pipeline view → filter proposalDueDate < today + bidStatus NOT IN (WON, LOST, NO_BID).
Companies
How to create a new Company
- Sidebar → Companies → + New
- Set
name(exact canonical form — check duplicates first) league,revenueType, address- Save
Always search first. 20+ duplicates have been merged so far.
How to merge duplicate Companies
- Identify canonical record (the one with more linked opps/people)
- Bulk-reassign linked records. For Opportunities:
mutation { updateOpportunities( data: {companyId: "CANONICAL_UUID"}, filter: {companyId: {eq: "DUPLICATE_UUID"}} ) { affectedCount } } - Same pattern for People, Venues
- For ServiceTickets use
companyIdId(note the double-Id) - Soft-delete the duplicate:
deleteCompanies(filter: {id: {in: ["DUPLICATE_UUID"]}}) - Reversible via
restoreCompany(id)
See Operators — API Access for the full cheat-sheet.
How to see everything for one account
Open the Company → use the tabs. Every linked object is there: Opportunities, Revenue Splits, Tickets, Estimates, Design Requests, RFP Analyses, Team Allocations, Venues.
People
How to add a new contact
- Sidebar → People → + New
- Crucial: link
companyto an existing Company — don't create a duplicate - Save
How to import a contact list
Use GraphQL createPeople(data: [...]) in 50-row chunks. See Data Migration — Imports.
Dashboards & views
How to switch to the ANC app
Top-left app switcher → ANC. All ANC dashboards and folders live here. Bookmarks should include the app path.
How to pin a dashboard to your sidebar
Open it → click the star icon. It goes into your Favorites section at the top.
How to share a view with a stakeholder
Open the view → copy the URL. URLs include the view ID so the recipient lands exactly where you did.
How to build a new widget
- Open a dashboard → Edit
- Add widget → pick type (bar, pie, number, gauge, line)
- Filter JSON — SELECT values are JSON-stringified arrays:
{"operator":"AND","children":[ {"fieldMetadataId":"<uuid>","operand":"IS_NOT","value":"[\"WON\"]"} ]} - For numeric:
"operand":"GREATER_THAN_OR_EQUAL","value":"50"(string-encoded)
Assistant shortcut:
add a widget to ANC 2026 showing pipeline value for TECHNOLOGY vertical with probability >= 50Assistant (Scout)
How to ask the assistant anything
Open the chat bubble (top-right) and type naturally. The assistant picks the right skill automatically.
How to force a specific skill
Prefix with: "use the skill-name skill". See the full skill list with example prompts.
How to generate a design mockup
touchdown graphic for Louisville, night game vibeTakes ~20 seconds. A Design Request record is auto-created.
How to teach the assistant something new
learn this: our default payment terms are 50/50 on projects over $500KData operations
How to export a view to CSV
Open the view → right-side options → Export → CSV.
How to bulk update 1,000 opportunities
Use GraphQL updateOpportunities(data, filter) — capped at 200 per call. For per-record unique updates, REST PATCH at ~1.5/s. See Rate Limits.
How to backfill a new field from Salesforce
See Data Migration — Salesforce Field Map for the mapping table + pickle file locations.
Notifications & follow-ups
How to get alerted on overdue deals
Automated overdue alerts are a Phase 2 item. For now, open Proposal Pipeline daily. An in-sidebar assistant digest is in progress.
How to assign a task
On any record, open the Tasks tab → + New Task → assign.
When things go wrong
The assistant picks the wrong skill
Force it: "use the pipeline-tracker skill: ...".
A view shows no rows
Check filters haven't accidentally AND'd to impossible. Remove filters one at a time.
Design AI didn't generate
The fallback worker (designer-ai.service) polls every 15s — give it a minute. If still nothing, check aiPrompt was actually saved and GOOGLE_API_KEY env var is present on the CRM server.
Dashboard widget shows wrong count
Widget filter values must be JSON-stringified — "[\"WON\"]" not "WON". Numeric values must be string-encoded — "50" not 50.
Stakeholder lands on empty "Standard" app
They need to switch to the ANC app (top-left). Or send them a direct-view URL — those include the app path.