Skip to main content
{{ brandName }}

Approved access only

{{ gateHeadline }}

{{ gateMessage }}

or

Check {{ gateEmail }} — if that address has access, a six-digit code is on its way. Type it in below.

New accounts are not open yet. If Shauna has already set one up for you, your code is on its way — if nothing arrives, call {{ phoneDisplay }} and we will get you in.

Don’t have an account yet? Sign up

Finish setting up your account

Rather talk to somebody? Call {{ phoneDisplay }}.

{{ gateDeniedText }}

{{ gateErrorText }}

← Back to the site

PREVIEW — staged features visible. Not what Shauna sees.

Parents come to me saying: the school district doesn't listen; my child isn't progressing; I don't know what I'm supposed to be asking for; I think they're doing things they aren't allowed to do; every meeting feels like a power struggle; I'm afraid I'm going to fail my child.

You shouldn't have to walk into that meeting alone.

Twenty-five years in special education, all of them on the parent's side of the table. I know what the district is required to provide, what they will offer if no one asks, and how to get the difference in writing. Let's talk for thirty minutes, free, and figure out where you actually stand.

$175 an hour, and the first 30 minutes are free — see what I do.

In person anywhere in Northern California. Virtually anywhere in the nation · 25 years in special education · M.A. Special Education · IEP, 504, evaluations, behavior

If you're reading this late at night after a hard meeting — you're in the right place, and you don't have to figure this out by yourself.

Empty chairs around a round wooden table in a quiet room, a potted plant at its centre and a shaft of morning sunlight falling across the wall and the wood floor
{{ treeIllustration }}

Let's take these one at a time.

You're not the first parent to say any of this to me this week — and each one has an answer.

“{{ c.quote }}”

{{ c.response }}

{{ c.linkLabel }} →

Where you are right now

You don’t need an IEP, or a diagnosis, or the right words for it yet.

{{ situationLead.label }} →

IEP, 504, IFSP, FAPE — if those acronyms are new to you, that is completely normal, and it is part of what I am for. There is a plain-language glossary if you want one.

How we will level the playing field so all kids can access their education equitably.

{{ tableIllustration }}

STEP 1

We talk

A free 30-minute consultation — no charge, no commitment — to figure out where you stand.

STEP 2

I prepare

I review the records and build a plan before anyone sits down.

STEP 3

We show up

The district brings a dozen people. You won't sit across from them alone.

STEP 4

I follow through

I review what was written down and flag anything that needs pushback.

See what I do in that room → {{ bookLabelShort }}

Two ways we can work together

Whichever fits, we start with the same free half hour.

Consultation model

Prepare me

I get you ready to walk into the meeting and advocate for your child yourself.

What that includes

  • A first meeting to talk through where your child is now, and what they need
  • A review of the IEP paperwork
  • A strategy meeting before you go in

Attendance model

Come with me

I attend the IEP or 504 meeting with you, and represent your child in the room.

What that includes

  • Everything in the consultation model
  • Correspondence with the district on your behalf
  • The meeting itself
  • Any follow-up meetings afterwards
  • A final read of the IEP document before you sign it

{{ homeRateLine }}

What most families need

Prepare me{{ homeTypicalPrepare }}
Come with me{{ homeTypicalAttend }}

Every case is different. I'll tell you what I expect after the free call, before you decide anything.

What this costs, and how families manage it → See the full process →

Words from families

Real families, their own words.

{{ t.quote }}

— {{ t.attribution }}

See all →

Shauna Rottweiler, special education advocate

Meet Shauna

Master of Arts in Special Education, twenty-five years in the field, and all of them on the parent's side of the table.

Credentials in Special Education, General Education, and Administration — and the plain-spoken kind of experience that only comes from sitting in the room, meeting after meeting.

Read Shauna's story →

Ready when you are.

No charge, no obligation, and if I'm not the right person, I'll tell you who is.

Services & Cost

What this costs, and how families manage it.

The first conversation costs nothing.

Thirty minutes, no charge, no obligation. Bring what you have — and if you don't have anything yet, bring your questions.

{{ bookLabelCall }}

Two ways we can work together.

Consultation model

Prepare me

This model is used to prepare you to be able to effectively advocate for your child at the IEP meeting. It consists of an initial meeting to discuss the present levels and needs of your child, a review of IEP paperwork, and a meeting to discuss strategy in preparation of the IEP meeting.

Attendance model

Come with me

I attend the IEP or 504 meeting with you, to represent your child. It consists of an initial meeting, a review of IEP paperwork, correspondence with the district, attending the meeting, post meetings, and a final IEP document review.

Where most families start.

Two common shapes this takes. Neither is a fixed product — if your situation doesn't fit either one, we'll build what does.

{{ t.eyebrow }}

{{ t.name }}

{{ t.blurb }}

  • {{ item }}

Billed at $175/hr for the hours it actually takes — what that covers, and how families manage it, is further down this page.

Here's everything I actually do.

For your child — start to finish.

Prepare me

{{ t.task }} {{ t.hours }}

Come with me

{{ t.task }} {{ t.hours }}

What might this look like for us?

A private estimate — nothing here is saved or sent anywhere.

What's going on right now?

Do you want me to prepare you, or come with you?

In person or virtual?

What I'd actually do for you

{{ t.task }} {{ t.hours }}

{{ estResultCost }}

typically {{ estResultHours }} hours

At $175 an hour you can do that arithmetic, but every case is genuinely different — so let’s put a real number to yours on the free call, before you commit to anything.

{{ estResultMonthly }}

spread over six months

Nobody pays this all at once unless they want to: you can pay as you go as the work happens, or prepay 5 hours and the 6th is on me. And if cost is the reason you're hesitating, please say so on the free call — I have worked something out with every family who has asked.

This is an estimate, not a bill. Every family is different, and we'll talk through your actual situation on the free call — which costs nothing.

Let's figure that out together — that conversation is free.

$175 an hour.

That covers everything — reading your child's file, correspondence with the district, travel time, the meeting itself, and the follow-up. There are no separate line items and no surprise charges.

How families manage it.

Pay monthly

You may be able to split this into monthly payments at checkout. Available options are shown once you get there.

Reserve a block of hours

Prepay 5 hours and the 6th is on me — more like a retainer than a bill.

Pay as you go

Billed as the work happens, no commitment up front.

"If cost is the reason you're hesitating, please say so on the free call. I have worked something out with every family who has asked."

Sometimes you don't need me.

Sometimes the answer is short and you don't need to pay anyone for it. I'll tell you that on the free call, and I'll tell you where to go instead.

I never promise a specific outcome for a child — I promise to tell you the truth about what I see.

Areas of expertise

{{ tag }}

Policies, in plain language

When the district cancels the meeting, the family is never charged.

If a family cancels within 12 hours, we reserve the right to bill for one hour.

Reschedules are handled case by case — life happens on both sides.

An unpaid balance may be referred to collections after 90 days.

"In addition to getting my child the best possible services, I get so much more peace of mind with Shauna."

— Christina

{{ bookLabelFull }}

About

A letter, not a résumé.

Shauna Rottweiler, special education advocate

I've spent twenty-five years in special education, all of them on the parent's side of the table, and I still believe every child deserves someone in that room whose only job is them.

I got into this work because I kept watching capable, loving parents get outnumbered — in rooms with five, ten, sometimes fifteen district staff, all of whom knew the process better than the family did. That gap is not the parent's fault, and it's not the child's. It's just a gap. Closing it is what I do.

I have twenty-five years of hands-on experience in special education, in both teaching and leadership roles. I help families navigate the IEP and 504 processes, and I work with parents, administrators, outside agencies, school-site staff, and the rest of the IEP team — serving as a resource and liaison to the agencies and services around your child. I have the unusual advantage of understanding both the legal side of special education and what actually happens, day to day, inside a district.

Credentials and education

  • Master of Arts in Special Education — University of the Pacific
  • Bachelor of Arts in Liberal Studies — California State University, Stanislaus
  • Credentials in Special Education, General Education, and Administration

How I work

I represent your child only.

Not the district, not the school. Just your child.

I will tell you when you don't need me.

If the answer is simple, I'd rather give it to you for free than bill you to hear it.

I put it in writing.

Verbal promises from a district are easy to forget. Written ones aren't.

Where I work

In person anywhere in Northern California. Virtually anywhere in the nation. Travel time is billed at the same $175 an hour, and we agree on it before I get in the car.

Guiding Light Special Education Advocacy is now {{ brandName }} — same Shauna, same work.

{{ brandName }}

How It Works

A calm walkthrough, start to finish.

1. The free 30-minute call

Here's what helps me help you fastest:

  • your child's current placement
  • your child's disability
  • your main area of concern
  • the most current IEP, plus any amendments
  • the most current psychologist's report

None of this is mandatory. If you don't have it, come anyway.

2. If we work together

You let me know you'd like to move forward. Then you complete an Authorization for Release of Information so I can start reviewing your child's records. There are three other small things, and that is all of them: a short services agreement to sign online, a private page of your own where your child's documents and invoices live, and a two-minute form asking how to reach you.

A hand resting on an open ring binder of tabbed, multi-page school records on a warm wooden table, a sticky note at the edge

Three hundred pages of paperwork, turned into a plan.

Most of what happens for your child happens before anyone sits down. Reading the file closely is where the leverage is.

{{ paperworkIllustration }}

3. Before the meeting

I review your child's file, look for gaps and inconsistencies, and come to the strategy conversation with real questions and priorities — not generic ones.

4. In the meeting

If I'm attending with you, I speak up when something needs to be addressed and keep the conversation anchored on your child. If I've prepared you instead, you walk in with a plan and I'm a phone call away.

5. After

I follow up on anything left open, review the final IEP document line by line, and prepare a dissenting statement if one is needed.

When to reach out

Struggling with the school system
Before an IEP
After a meeting that went badly
During an evaluation
After a placement change
After a suspension or manifestation determination

Testimonials

Words from families.

Guiding Light Special Education Advocacy is now {{ brandName }} — same Shauna, same work.

{{ t.quote }}

— {{ t.attribution }}

Book a session

Three quick steps. No account, no login.

1 2 2 3 3

What do you need?

What the call covers

  • Your child's current situation
  • What the district is required to offer
  • Whether working together makes sense

Handy to have (not required)

  • Current IEP or 504
  • Recent psychologist's report

There is no charge and no obligation.

$175/hr. The first 30 minutes are free.

When works for you?

Choose a day

{{ bookErrors.slot }}

Looking up her open times…

{{ bookSlotsErr }}

{{ bookMonthLabel }}

Pick a day above and I’ll show you the times that are open.

Choose a time on {{ bookDateLabel }} (Pacific)

Morning

Afternoon

Choose a day and a time to continue.

The free consultation runs 30 minutes. If we're working together on an hourly basis, we'll agree on the length of each session as we go. Either way, I'll call to confirm your time before it's final.

Need to move it? Just let me know — there's no charge to reschedule.

If you need to move or cancel, 12 hours' notice means no charge. Less than that and I may need to bill for the hour I set aside — I'll always talk to you first.

About you and your child

{{ bookErrors.name }}

So I can actually reach you — the old site didn't ask for this and it cost us both time.

{{ bookErrors.phone }}

{{ bookErrors.email }}

Is there a current IEP or 504?
How would you like to meet?

{{ bookKindNote }}

{{ bookErrors.consent }}

{{ bookSubmitError }}

Your pick — {{ bookDateLabel }} at {{ bookTimeLabel }} — is still selected.

Prefer to skip the form? Call (209) 809-3630 and this gets set up by phone.

These details go straight to Shauna, so she has what she needs before you talk. They are never shared with your school district, your child's school, or anyone outside this practice.

You're on the calendar.

Thank you for reaching out. I'll call you at the number you gave me to confirm the time, and I'll follow up by email as well.

No charge, no obligation.

I'll go over what's involved and what it costs before anything is charged.

Questions before then? {{ phoneDisplay }}

Back to home →

The first conversation is free

Book a free consultation

Online booking opens soon. Call or email Shauna and she will find you a time herself, usually within one business day.

How to reach Shauna

Reserve time with Shauna.

Demonstration only. This checkout takes no real payment and will not accept a real card. Use {{ checkoutDemoSuccess }} to see a successful payment, or {{ checkoutDemoDecline }} to see a decline.

How would you like to pay?

Your details

or pay by card

Card details

{{ checkoutError }}

Can't use a card? Call me on (209) 809-3630 and we'll sort something out.

This is a demonstration — no real payment is taken, and only Stripe's published test card numbers are accepted.

{{ checkoutReceiptTitle }}

{{ checkoutReceiptBody }}

{{ checkoutReceiptAmount }}

{{ checkoutReceiptCard }}

Contact

Let's talk.

{{ phoneDisplay }} {{ email }}

In person anywhere in Northern California. Virtually anywhere in the nation.

I aim to respond within one business day.

Thank you.

I'll be in touch soon — usually within one business day.

{{ contactErrors.name }}

{{ contactErrors.phone }}

{{ contactErrors.email }}

{{ contactErrors.message }}

{{ contactSubmitError }}

Prefer to skip the form? Call (209) 809-3630 and Shauna will take it from there.

Call me, or write to me.

Either one comes straight to me and I answer it myself — there is nobody in between. Online booking and client accounts are on the way; until they open, these two are the way in.

Call {{ phoneDisplay }} {{ email }}

Resources

Meant to leave you engulfed in the information, not short on it.

Glossary

{{ g.term }} {{ g.def }}

What the process usually looks like

Every district follows its own timing, and the exact deadlines depend on state and federal law — I'll walk you through the ones that apply to you. But the shape of it is usually this:

You raise a concern in writing
The district proposes an assessment plan
Evaluation
The IEP meeting
The document
Ongoing review

Emails that work

{{ et.title }}

{{ et.body }}

Coming from Shauna

Parent workshops, live webinars, and recorded trainings are on the way. Leave your email and I'll let you know the moment they're ready.

Parent workshops, live webinars, and recorded trainings are on the way.

You're on the list — thank you.

{{ notifyResSubmitError }}

The sign-up box opens with online booking. Until then, tell me you want to know and I will put you on the list myself — {{ phoneDisplay }}, {{ email }}, or the contact page.

Client Forms

The forms you'll actually need.

Authorization for Release of Information

Authorizes your child's district, county office, regional center, or health agency to share educational and medical records with {{ brandLegal }} for educational assessment and planning. It's effective for one year from signature unless another date is given, and you can revoke it in writing at any time — revocation takes effect on receipt, but doesn't undo records already released.

Download the form ↓

2026 Rate Sheet

The full breakdown of engagement models, task lists, and hourly rate.

Download the rate sheet ↓

Your child's information is handled carefully and shared only as your signed authorization allows.

FAQ

Questions families ask.

{{ f.a }}

Refer a family

If I helped your family, here's how to point someone else my way.

Most of my work comes from families telling other families. If you know someone who's stuck in the same place you were, I'd be glad to talk with them.

{{ st.n }}

{{ st.title }}

{{ st.body }}

The thank-you

When a family you sent me becomes a client and stays a while, I send you a thank-you gift. I'd rather do that than spend the same money on advertising to strangers.

The exact amount and the qualifying period are being finalized — refer someone now and I'll honor it either way.

Send someone my way

Thank you.

I'll reach out to them with care, and let you know how it goes.

{{ referralErrors.name }}

{{ referralErrors.email }}

{{ referralSubmitError }}

The referral form comes back with online booking. Until then, call or email me their first name and a line about what their family is facing, and I will reach out to them with the same care I would use for you.

Call {{ phoneDisplay }} {{ email }}

Everything else is on the contact page.

Prefer to just hand them my number? {{ phoneDisplay }} works perfectly.

Defensor de Educación Especial

No tiene que entrar solo a esa reunión.

Soy Shauna Rottweiler, defensora de educación especial en California con veinticinco años de experiencia. Ayudo a familias con el proceso de IEP y 504, y me aseguro de que su hijo o hija reciba lo que necesita.

La primera conversación es siempre gratuita, sin ningún compromiso.

Trabajo con una intérprete, y el apoyo en español está disponible durante todo el proceso.

{{ phoneDisplay }} {{ bookLabelEs }}

Create an account

Set up your family’s portal.

It takes about a minute. You confirm your email address, tell me a little about your child, and your portal opens straight away. Shauna picks it up from there the next time she opens her client list.

One moment…

Step 1 of 3

This is the address you will sign in with. We will send a six-digit code to it.

Step 2 of 3

A six-digit code is on its way to {{ gateEmail }}. Type it in below. It can take a minute to arrive, and it is worth checking the spam folder.

Step 3 of 3

Signed in as {{ suEmail }}. Just your child’s basics — Shauna will ask for the rest when you speak.

Your child

Shauna reads every one of these herself. Nothing is charged and nothing is agreed by signing up.

{{ suDoneText }}

Open your portal →

You are already signed in as {{ suEmail }}, and that address already has an account.

{{ suGoLabel }}

{{ gateErrorText }}

{{ suError }}

Already have an account? Sign in. Would rather talk first? {{ phoneDisplay }}.

Create an account

Set up your family’s portal

Client accounts open soon. If you are already working with Shauna, she will send you an invitation. Otherwise call or email her and she will be in touch.

How to reach Shauna

Billing & Payments

How paying for this actually works.

No surprises, no hidden line items. If money is the reason you're hesitating, say so on the free call — I have worked something out with every family who has asked.

$175 an hour.

That's the whole rate. It covers reading your child's file, correspondence with the district, travel time, the meeting itself, and the follow-up.

What's billable

All at that same $175 hourly rate: advocacy work on your child's case, attending meetings, reviewing records and documents, corresponding with the district on your behalf — and travel to in-person meetings.

I bill for travel because that drive is time I can't spend helping another family. It's shown on your receipt as its own line, so you can always see exactly what it was for.

Ways to pay

Pay as you go — the usual way

I invoice only for hours I've actually worked, and you pay each invoice yourself from your portal page, online by card. Nothing is charged without an invoice you can see first, and your portal page always shows what's been billed and what's been paid.

Reserve a block of hours

Prepay 5 hours and the 6th is on me. It works like a retainer: the hours sit there, I draw against them as I work, and you can see what's left at any time.

Monthly payments

For larger engagements you may be able to split the cost into monthly payments. Whether you qualify, and what the terms are, is shown to you at checkout before you agree to anything.

What you'll see, and when

Every invoice itemizes the hours and what they were for, and it stays on your portal page after it's paid.

You can ask me at any point what's been billed and what's outstanding, and I'll tell you plainly.

I bill for work as it happens rather than in a lump at the end, so nothing accumulates into a shock.

If plans change

When the district cancels the meeting, you are never charged. That's simply the cost of doing this work.

If you need to cancel within 12 hours of a scheduled meeting, I reserve the right to bill for one hour.

Reschedules are handled case by case. Life happens on both sides — I've had to move meetings too.

"If cost is the reason you're hesitating, please say so on the free call."

{{ bookLabelCall }}

Full terms are in the Terms of Service.

The written terms are being finalised. Ask me for them at any point and I will send them over — get in touch.

Where I Work

Northern California in person. The whole nation virtually.

Distance has never been the thing that decides whether I can help a family.

{{ c.title }}

{{ c.body }}

{{ c.note }}

Spanish-speaking families

I work with an interpreter, and Spanish-language support is available through the whole process — not just at the meeting. Ver esta página en español →

{{ bookLabelFull }}

For Schools & Organizations

I've sat on both sides of this table.

Twenty-five years in special education, in teaching and in leadership, plus credentials in Special Education, General Education, and Administration. I know what districts are required to do and how hard it is to do it well with the staffing you actually have. Sometimes the most useful thing I can be is an outside set of eyes.

{{ sv.title }}

{{ sv.body }}

Rates for organizations

Organizational work is quoted per engagement rather than by the hour, because a staff training day and a file review aren't the same shape of job. Tell me what you need and I'll put a number to it.

Start a conversation

Workshops & Webinars

Coming soon — and I'd like to know what you need.

Live sessions, parent trainings, and recorded videos are in the works. Nothing is scheduled yet, so this page is a waitlist rather than a calendar — leave your email and you'll hear the moment there's a date.

Live sessions, parent trainings, and recorded videos are in the works. Nothing is scheduled yet, so this page is a list of what is coming rather than a calendar.

Topics on the list

{{ w.title }}

{{ w.body }}

Tell me you're interested

I'll email you when the first session has a date. Nothing else, ever.

You're on the list — thank you.

{{ notifyWsSubmitError }}

The sign-up box opens with online booking. Until then, say the word and I will note your interest myself — {{ phoneDisplay }}, {{ email }}, or the contact page.

Terms of Service

The Terms of Service and the Privacy Policy are being finalised, and both will be published on this page. In the meantime the public pages ask you for nothing — there are no forms to fill in. The only place an email address is asked for is the private sign-in Shauna uses to reach her own client records, and that is not a door for visitors.

If you have a question about either one, or about anything you sent before today, ask me directly on {{ phoneDisplay }} or at {{ email }}.

Get in touch

In effect since {{ legalTermsEffective }} · version {{ legalTermsVersion }}

Draft — not yet in effect. This page has not been published and does not yet apply. It is here so it can be read and reviewed.

Welcome. This website is operated by {{ brandLegal }} (“we,” “us,” “our”), a California limited liability company, formerly known as Guiding Light Advocacy. By using this website, you agree to these Terms of Service. If you do not agree, please do not use the site — though you are always welcome to call or email us instead.

These Terms govern your use of this website. If you engage us for advocacy services, that engagement is governed by a signed services agreement between you and us; where these Terms and a signed agreement differ, the signed agreement controls.

1. Who we are — and who we are not

{{ brandLegal }} provides special education advocacy services. Shauna Rottweiler, M.A. is a professional special education advocate.

We are not a law firm, and we are not attorneys. Nothing on this site, and nothing in our services, is legal advice or legal representation. No attorney-client relationship is ever formed with us. Advocacy means helping you understand your child’s rights and options, preparing you for meetings, attending meetings with you, and helping you communicate effectively with your school district — it does not include representing you in court or providing legal opinions. If your situation needs a lawyer, we will say so, and we encourage you to consult one.

2. The information on this site

Everything published on this site — articles, FAQs, resources, descriptions of processes like IEPs and 504 plans — is general educational information. It is not advice about your specific child or situation, and it is not a substitute for professional judgment applied to your facts. Special education law and district practices change and vary by district; while we work to keep the site current and accurate, we make no guarantee that any page is complete, current, or applicable to your circumstances. Using this site does not make you a client.

3. Booking and consultations

Submitting the booking form is a request, not a confirmed appointment. Your consultation is scheduled only when we confirm it with you directly by phone or email. The initial 30-minute phone consultation is free, and — as everywhere on this site — free means free: no card required, no obligation afterward.

You agree that the contact information you submit is accurate and yours to give, and that you are 18 or older. By checking the consent box on the booking form, you agree that we may contact you by phone or email about your request.

4. Fees

Advocacy services are billed at $175 per hour. That one rate covers the work on your case: meetings, document and records review, preparation, correspondence with the district on your behalf, and travel to in-person meetings (travel is billed because that time cannot be spent on another family’s case). There are no separate line-item charges for different kinds of work.

If a matter looks like it will take materially more time than discussed, you will be told before that time is spent — never billed for a surprise after the fact.

5. Prepaid hours

If you prepay for a block of hours, those hours are drawn down as work is actually done. If your matter looks like it will need more hours than you prepaid, you will be told before that happens, and only the difference is billed. Prepaid hours are applied to services; any refund of unused prepaid hours is handled under your signed services agreement.

6. Rescheduling and cancellation

Moving or cancelling a paid appointment with at least 12 hours’ notice costs nothing. With less than 12 hours’ notice, one hour may be billed at our discretion — and this will always be discussed with you first, not silently charged. The free 30-minute consultation is never subject to this: it may be moved or cancelled at any time, at no cost.

Cancellations caused by the school district — a meeting the district moves or cancels — are never charged to your family.

7. Payments

Payments made through this site are processed by Stripe, a third-party payment processor, under Stripe’s own terms and privacy policy. If you choose to pay an invoice through Klarna, that payment is also subject to Klarna’s own terms. Your card details go directly to Stripe; we never see or store your full card number. By submitting a payment you authorize the charge described on the payment page, and a card you have agreed to keep on file is charged only as your signed Billing Agreement describes. Unpaid balances may be referred to collections after 90 days — and before anything like that, we will always have talked with you; if cost is a problem, tell us, and we will work with you.

8. No guarantee of outcome

Special education outcomes are decided by IEP teams, school districts, and sometimes hearing officers — not by us. No specific result, service, placement, or outcome is guaranteed for any child. Testimonials on this site reflect those families’ experiences; they are not a promise about yours.

9. Your submissions

When you submit information through the site’s forms, you confirm it is accurate to your knowledge and that you have the right to share it (including information about your child, which only a parent or legal guardian should submit). You retain ownership of what you submit; you give us permission to use it to respond to you and provide services as described in our Privacy Policy. Separately from anything you submit, the site keeps a short, anonymous record of which pages were shown and whether something went wrong, so that faults can be found and fixed; the Privacy Policy says exactly what is, and is not, recorded.

10. Acceptable use

You agree not to: use this site for any unlawful purpose; submit information about a child you are not the parent or legal guardian of, without authority to do so; attempt to access accounts, data, or areas of the site not intended for you; probe, scan, or test the site’s security; interfere with the site’s operation; scrape, harvest, or bulk-collect content or data from the site; or misrepresent your identity in a submission. We may suspend or block access to the site to protect it or the families who use it.

11. Intellectual property

The content of this site — text, design, graphics, logos, illustrations, and the software that runs it — is owned by us or our licensors, and is protected by copyright and trademark law. “Rottweiler Education Advocate” and its logo are our marks. You may view, print, and share pages for your family’s personal, non-commercial use; any other reproduction, distribution, or creation of derivative works requires our written permission. Nothing on this site grants you any license to the site’s underlying software.

12. Third-party links and services

This site links to outside resources and uses third-party services (such as payment processing). Those sites and services belong to their operators, have their own terms, and are outside our control. A link is not an endorsement, and we are not responsible for third-party content or practices.

13. Disclaimer of warranties

This website is provided “as is” and “as available.” To the fullest extent permitted by law, we disclaim all warranties, express or implied, including merchantability, fitness for a particular purpose, accuracy, and non-infringement. We do not warrant that the site will be uninterrupted, error-free, or free of harmful components. Nothing in this section limits warranties or rights that California law does not allow to be disclaimed.

14. Limitation of liability

To the fullest extent permitted by law: our total liability arising out of your use of this website will not exceed one hundred dollars ($100) or the amount you paid through this site in the six months before the claim arose, whichever is greater; and we will not be liable for indirect, incidental, special, consequential, or punitive damages arising from use of the website. This section applies to website use only — liability connected to advocacy services is addressed in your signed services agreement — and nothing in these Terms limits liability that cannot lawfully be limited, including liability for gross negligence, willful misconduct, or violation of consumer protection law.

15. Indemnification

If your violation of these Terms — for example, submitting information you had no right to share, or misusing the site — causes a third party to bring a claim against us, you agree to indemnify us for the reasonable costs and damages of that claim.

16. Governing law and disputes

These Terms are governed by the laws of the State of California. Before any formal proceeding, you agree to contact us and give us thirty (30) days to try to resolve the issue directly — most problems are misunderstandings, and we would rather fix them than fight about them. Any dispute that cannot be resolved informally will be brought in the state or federal courts located in California, and each party consents to their jurisdiction. Either party may use small claims court for qualifying claims.

17. Changes to these Terms

If these Terms change, the new version will be posted at this address with a new effective date. Material changes will be noted clearly on this page. Continued use of the site after a change takes effect means the updated Terms apply.

18. General

If any part of these Terms is held unenforceable, the rest remains in effect. Our not enforcing a provision is not a waiver of it. These Terms, together with the Privacy Policy, are the entire agreement between you and us about use of this website — they do not replace or modify any signed services agreement. You may not assign these Terms; we may assign them to a successor of our business. If any part of this site is ever offered in another language, the English version of these Terms is the authoritative one.

19. Accessibility

We want this site to be usable by everyone. If you have difficulty accessing any part of it, contact us and we will help you directly and work to fix the barrier.

20. Contact

{{ brandLegal }}
Email: {{ email }}
Phone: {{ phoneDisplay }}

Privacy Policy

The Privacy Policy and the Terms of Service are being finalised, and both will be published on this page. In the meantime the public pages ask you for nothing — there are no forms to fill in, so a visit here collects nothing about you. The only place an email address is asked for is the private sign-in Shauna uses to reach her own client records.

If you sent something through this site before today and you would like it deleted, or you want to know what is held, just say so — {{ phoneDisplay }} or {{ email }}. Asking costs you nothing, and Shauna actions it herself.

Get in touch

In effect since {{ legalPrivacyEffective }} · version {{ legalPrivacyVersion }}

Draft — not yet in effect. This page has not been published and does not yet apply. It is here so it can be read and reviewed.

This website is operated by {{ brandLegal }} (“we,” “us,” “our”), a California limited liability company, formerly known as Guiding Light Advocacy. This policy explains what information this website collects, how it is used, who can access it, and the choices you have. It is written to be read, not skimmed past — if anything here is unclear, please ask us directly at {{ email }}.

This policy covers this website only. When a family engages us for advocacy services, that work — including any educational, psychological, or medical records shared with us — is governed by a signed services agreement and a signed Authorization for Release of Information, which provide protections beyond this policy.

1. Information you provide to us

We collect personal information only when you choose to give it to us. That happens in two places: the public forms on this site, which anyone can use, and the client portal, which is a private page we open only for a family working with us. The public forms come first:

Consultation booking form. Your name, phone number, email address, your child’s grade level, your school district, whether your child has an IEP (or one in process), the type of help you’re looking for, how you would like to meet (by phone or by video), a preferred date and time, and any details you choose to share about your child’s situation. A consent checkbox on this form confirms you agree to be contacted by phone or email about your request.

Contact form. Your name, email address, phone number (optional), and your message.

Referral form. Your name, email address, your relationship to the family you are referring, and any details you choose to include.

Resource and workshop updates. Your email address, and which list you signed up from.

Payments. If you make a payment through this site, it is processed by Stripe, a third-party payment processor. Your card number goes directly to Stripe and is never stored on our systems; we receive only confirmation of payment, the card brand, the last four digits and, for a card you choose to keep on file, its expiry date.

You are never required to submit information through this website. Every form is voluntary, and you may always contact us by phone or email instead.

The client portal. If we open a portal account for your family, or you ask for one from the sign-up page on this site, you may give us your child’s name, date of birth and grade, the school and district, your child’s disability as the school describes it and their current placement (both optional), and your own name and phone number; upload documents about your child; book a meeting or ask to move one; pay an invoice, or question one; leave a review; and read and sign agreements and authorizations online. When you sign something online we record the name you typed, the sentence you agreed to, the exact text you signed, the date and time, the internet address and browser you signed from, and, on a release form or a Billing Agreement, the signature you drew with your finger or mouse. That record is what makes an online signature mean something later, so we keep it as the record of what was agreed; nothing on the website can change it afterwards.

Records shared with us for advocacy work. If you become a client, you or your child’s school district may give us education records, evaluations, assessments, and correspondence about your child. They reach us directly — by email, on paper, or from the district — or through the client portal, and we keep them in the private, staff-only system we use to prepare for your case. How those records may be used is governed by your signed services agreement and your signed Authorization for Release of Information — see section 9.

2. Information about children

Parents and guardians may choose to share information about their child (such as grade level or IEP status) when requesting a consultation. That information is provided by you, about your child — this website does not collect information directly from children, is not directed at children under 13, and we do not knowingly accept form submissions from anyone under 18. If you believe a child has submitted information through this site, contact us and we will delete it.

Information you share about your child’s situation is treated as sensitive from the moment it arrives, whether or not you become a client.

3. Information collected automatically

Very little, and none of it through anyone else. This site is deliberately built without advertising trackers, third-party analytics services, social media pixels, or cross-site tracking of any kind. Fonts are served from this website itself, not from third-party font services.

Like nearly all websites, the infrastructure that hosts this site generates standard technical server logs (such as IP address, browser type, and pages requested) used for security and operations. The site stores a small browser preference (such as a display setting) on your own device; it identifies nothing about you and is sent nowhere. If you sign in to an account on this site, your browser additionally stores a sign-in token so that you stay signed in between pages; it is cleared when you sign out.

Fault and usage records we keep ourselves. So that we can find out where this site is failing people, and fix it, the site keeps a short record — in our own database, and nowhere else — of what it was doing when something happened. No analytics company or other outside service receives it, and it uses no cookies. For every visitor, and for every family using the client portal, this record is anonymous: it is never linked to your name, your email address, your account, or your internet address, and we do not store internet addresses in it at all. The only thread running through it is a random identifier that your browser makes up for the tab you have open, keeps only inside that tab, and throws away when the tab closes. Nothing anywhere joins that identifier to a person.

Each entry records: which page was shown (the page’s address only — never anything after a question mark, and never what you typed into a form); whether an error occurred, with a short description of it; which broad kind of action took place (for example “a booking was submitted” or “a document upload failed”); the general family of browser (such as “Chrome” or “Safari” — never the full browser signature); a rough size of the window (small, medium, or large); and which version of this site was running.

There is one deliberate exception. When our own staff — the advocate, and the technology provider who supports this site — are signed in to the practice’s console, their entries are attributed to their staff email address. That is on purpose: the point is to see where the software is failing the people who run the practice, so that it can be fixed. No family’s entries are ever attributed this way.

These records are used only to find and fix faults and to understand which parts of the site are used. They are never used for advertising, never sold, never shared with anyone, and never used to build a profile of you or your family. They are kept for 90 days and then deleted.

Do Not Track: because this site does not track visitors across websites, it treats every visitor as if a “Do Not Track” signal were present. The anonymous fault record described above does not follow you to other sites and cannot identify you, so there is nothing to opt out of.

4. How we use your information

We use the information you submit to: respond to your request; schedule and confirm consultations; provide, plan, and bill for advocacy services; send the updates you signed up for; keep records our business reasonably requires; and comply with law. We use the anonymous fault and usage records described in section 3 only to find and fix faults in this site and to understand which parts of it are used.

We do not use your information for advertising. We do not build marketing profiles. We will only contact you about the matter you wrote to us about, or about updates you specifically signed up to receive.

5. Who can access your information

We never sell, rent, trade, or license your personal information to anyone. Ever. Information submitted through this site can be read only by our staff, and by the limited categories of service providers below, each of which is permitted to handle it only to do its job:

  • Database and infrastructure providers that store what you give us — form submissions, what you enter in the client portal, and records shared with us for advocacy work — and power the site’s features, in data centers located in the United States.
  • A website hosting provider that serves the site’s pages.
  • A payment processor (Stripe) that handles card payments, including the card we keep on file to bill for services under a signed Billing Agreement. Your card number is typed into the payment processor’s own form and goes to it directly; it is never stored on our systems. The card itself is held by the payment processor and never by the practice — what we hold is the brand, the last four digits and the expiry date, the three things a receipt already prints, together with a reference that can be used only to charge this practice’s own account and is worth nothing to anybody else. Stripe also holds a billing record for a client set up for online billing — the name and email address on that account — and, when you pay an invoice, receives the invoice number and the email address of the person paying.
  • Klarna, a buy-now-pay-later provider, when you choose to pay an invoice that way. Klarna makes its own credit decision and collects that payment directly; we send it only what is needed to identify the invoice and the amount, and anything else Klarna needs for its decision — your name, email address and address — you give to Klarna yourself on its own form.
  • An email delivery provider that sends the messages this site sends you — a sign-in code, a portal invitation, or a notice that an invoice is due — and which therefore receives your email address and the contents of that message. Those messages are built from templates that carry no child’s name, date of birth, grade, or school.
  • A calendar service provider that keeps the advocate’s working calendar. When a consultation is confirmed, the appointment — the parent’s name, the kind of help requested, and the time — is placed on that calendar so that the same time cannot be booked twice. The booking form on this website does not ask for your child’s name, so it is not on that first entry. Once you have an account with us and an appointment is booked for a named child, that child’s name is on the calendar entry as well.
  • A business email and calendar provider whose workspace holds the practice’s own mailbox — the address you write to when you email us, and the replies we send back — together with the calendar described above. That workspace is a tenant administered by the independent technology service provider described below, rather than one the practice administers for itself, so that provider’s administrator can reach the practice’s mail and calendar. That access is limited to what operating and supporting these systems requires, may not be used or disclosed for any other purpose, and is subject to the same duty of confidentiality that governs everything else in this list.
  • An AI document-processing provider. For a client’s case, we send this provider the text and the page images of the records shared with us, and our own meeting notes about your child or your family, so that it can turn them into searchable text, pull out details such as dates and services, and help our staff find where something was said. Under our written agreement with that provider, nothing we send and nothing it produces is used to train its AI models; what we send is deleted no later than 30 days afterwards, and we cannot ask the provider to delete a particular item sooner than that. In limited cases — where the provider’s automated safety systems flag content, or where the law requires it — material may be kept for up to two years.
  • An independent technology service provider that builds, maintains, secures, and supports this website. Its access is limited to what is necessary to operate and support the site; it is not permitted to use or disclose your information for any other purpose; and its confidentiality obligations continue after the relationship ends.
  • Professional advisors (such as an accountant or attorney) where reasonably necessary, under professional duties of confidentiality.

Beyond these, we disclose personal information only if required by law — such as a valid subpoena or court order — or where disclosure is necessary to protect a child from harm, consistent with our professional obligations.

Form submissions on this site are one-way by design: no visitor can ever read back, browse, or retrieve what any other visitor submitted.

6. How your information is protected

Information travels to us over encrypted connections (HTTPS) and is stored with access controls that limit reading to authorized staff. Administrative accounts are protected by authentication, and access follows a least-privilege principle — people and systems can reach only what their role requires. No method of transmission or storage is perfectly secure, and we do not promise the impossible; we do promise reasonable, actively maintained safeguards, and prompt notice as described below.

If we learn of a breach of security affecting your unencrypted personal information, we will notify you as required by California law (California Civil Code § 1798.82), without unreasonable delay.

7. How long we keep it

We keep form submissions for one year, after which they are deleted. There is one exception: where there is an unpaid balance, the related records are kept until that is settled, because those records are the evidence of what the work was. Records connected to an active engagement are governed by your signed services agreement rather than by this section.

Where records shared with us for an engagement are converted to searchable text and page images so that we can search them and point to where something was said, those copies are kept while the engagement is active, in the same staff-only system as the records themselves. They are never kept longer than the records they were made from, and what happens to all of it when an engagement ends is governed by your signed services agreement.

A signed Billing Agreement, and the record of the card kept under it — the brand, the last four digits, and when it was attached — are kept while the arrangement is in effect and for three years after it ends. That record is the proof of what you agreed to, and it is what answers the question if a charge is ever disputed. We never hold the card number itself; our payment processor does.

You do not have to wait a year. You can ask us to delete what you submitted at any time, using the form at the end of this policy, or by email or phone. We will honour the request unless the law requires us to keep it — and we will tell you if that is the case.

Deleting is not instant, and the delay is the protection. When you ask us to delete records, they come out of view straight away — from that moment nobody at the practice can see them — and they are erased permanently 90 days later. That gap is deliberate: it is what makes a request sent by mistake, or sent by somebody who was not entitled to send it, something we can undo rather than something nobody can. Where there is an unpaid balance for work already done, those particular records are kept until it is settled, as described above, and the 90 days run from there. If you would rather not wait, tell us and we will erase them at the next scheduled pass instead — that is a door which only opens one way, so we will ask you to confirm it first. One record outlasts a deletion request: a signed Billing Agreement, and the record of the card that was kept under it, stay for the three years described above, because they are the proof of what you agreed to if a charge is ever disputed.

8. Your choices and rights

You may at any time:

  • Ask what we have. Request a copy of the personal information you submitted through this site.
  • Ask us to correct it if it is wrong.
  • Ask us to delete it, subject to legal retention requirements.
  • Withdraw consent to be contacted, at which point we will stop, other than to confirm we have stopped.
  • Unsubscribe from updates at any time by replying to any update email or contacting us.

To exercise any of these, email {{ email }} or call {{ phoneDisplay }}. We will respond within a reasonable time and will never treat you differently for asking.

California residents: this business falls below the thresholds that make the California Consumer Privacy Act (CCPA) applicable. We extend the choices above to everyone anyway, because they are the right way to treat families.

9. Advocacy records are protected beyond this policy

Educational records, evaluations, and other documents concerning your child are requested and reviewed only under a signed Authorization for Release of Information, used solely for educational assessment, planning, and advocacy on your child’s behalf, and handled under the confidentiality terms of our services agreement. Nothing about your child’s records is ever used for any purpose beyond your family’s own case.

10. Links to other sites

This site may link to outside resources (such as government special-education references). Those sites have their own privacy practices, which we do not control. This policy ends where those sites begin.

11. Changes to this policy

If this policy changes, the new version will be posted at this address with a new effective date. If a change meaningfully reduces your privacy protections, we will post a clear notice on this page before it takes effect. Continued use of the site after a change takes effect means the updated policy applies.

12. Contact

{{ brandLegal }}
Email: {{ email }}
Phone: {{ phoneDisplay }}

If any part of this site is ever offered in another language, the English version of this policy is the authoritative one.

Ask us to delete your information

You're welcome to just email or call instead — whichever is easier for you. Asking costs you nothing, and this is a page about your rights, not a process to get through.

Your request has been received.

Shauna will action it personally, and will be in touch.

This is how we find what you submitted.

{{ deletionError }}

One moment

Loading…

Page not found

That page isn’t here.

The link may be out of date, or the address may have a typo in it. Everything on the site is reachable from the menu above.

Back to the home page

Billing administration. Authorized account only.

The Terms of Service and Privacy Policy took effect on {{ aLegalEffective }}. Please read both and confirm you accept them — once, and again only if they change.

Both pages are showing a placeholder while the public forms are off, so there is nothing to open from here yet. They come back the moment the site’s doors do.

{{ aLegalSaveError }}

We record the date and which version you agreed to. Nothing else.

{{ aAdminSectionTitle }}

{{ aAdminDemoFull }}

Some of these numbers could not be loaded — {{ aOverviewError }}

All action items

Everything waiting on you, oldest first.

Reading everything waiting…

Nothing is waiting. Every item across bookings, enquiries, documents and paperwork has been handled.

{{ aActionItemsMore }}

The $1 billing test

{{ aBtBadge }}

{{ aBtIntro }}

{{ aBtError }}

Checking whether this has been run…

1. Set it up

{{ aBtStep1Lede }}

2. Pay it

{{ aBtStep2Lede }}

YOUR OWN TEST ACCOUNT — this is what a parent sees. No real client is on this screen.

{{ aBtPortalInvoiceLabel }} {{ aBtPortalAmount }}

{{ aBtPortalLine }}

{{ portCardTitle }}

{{ portCardAmount }}

Your card details go straight to our payment processor and are never stored on this site.

Opening the secure card form…

{{ portCardErr }}

3. Watch the money arrive

{{ aBtResultLine }}

See it in Stripe

4. Clear it away

{{ aBtCleanupNote }}

Who has written in

Nothing waiting. Every enquiry that has come in has been handled.

{{ q.name }} {{ q.when }}

{{ q.snippet }}

{{ aEnquiryMore }}

This week

Next appointments

Nothing booked yet.

Releases to renew

Signed releases that have run out, or have two months or less left on them.

Reading the paperwork…

{{ aRenewError }}

Nothing needs renewing right now.

Outstanding

{{ aTotalOwed }}

across {{ aFamiliesOwingLabel }}

Collected this month

{{ aCollected }}

Money received since the 1st, from recorded payments.

Unbilled hours

{{ bUnbilledHoursAll }}

{{ bUnbilledValueAll }} not yet invoiced

You’re invoicing in QuickBooks for now. This section turns on once your Stripe bank account is linked.

What you ask for before a first meeting

Shown on a family's portal once they sign their release. Copied onto their own checklist then — changing this list does not touch a household already given theirs.

Loading…

{{ admFmError }}

Nothing on the list yet — a family sees no card until you add something.

{{ admFmSaveError }}

Saved.

Needs review

An unconfirmed invoice below isn’t in Accounts receivable yet — confirm it once you recognize the family. A request below hasn’t billed anything — call the family, then mark it handled.

{{ nrError }}

Unconfirmed invoices

{{ inv.name }} {{ inv.amount }}

{{ inv.number }} · {{ inv.date }}

{{ inv.rowError }}

Checkout requests

{{ req.name }} {{ req.amount }}

{{ req.method }} · {{ req.date }}

{{ req.rowError }}

Unconfirmed charges

{{ chg.name }} {{ chg.amount }}

{{ chg.what }} · {{ chg.date }} · nothing was charged

Signed up themselves

{{ clSelfCount }}

They confirmed their email address and told us about their child. Nothing has been agreed and nothing has been billed — taking them on puts them on your client list, where you can invite them, log hours and send a release.

Loading…

{{ clSelfError }}

{{ ss.name }}

{{ ss.meta }}

{{ ss.kids }}

{{ ss.when }}

{{ clSelfNote }}

Clients

{{ clCountLabel }}

Import families

One line per family. Each one becomes a client and that address is given portal access.

It reads most of the shapes a list arrives in: The Alvarez family <[email protected]>, the name first or the address first, and columns separated by commas, tabs or pipes — so a customer list printed out of QuickBooks can be pasted in as it is. Anything extra on a line, like a phone number or a balance, is picked up where it can be and ignored where it cannot. Nothing is written until you press the last button.

{{ clImpSummary }}

{{ clImpError }}

{{ r.name }}

{{ r.email }}

{{ r.problems }}

{{ r.line }} {{ r.statusLabel }}

{{ clImpRateNote }}

One address belongs to exactly one family, and an address that already signs in as staff cannot also be a family. There is no edit afterwards: correcting an address means removing it on that family’s page and inviting the right one.

{{ clImpDone }}

{{ r.name }}

{{ r.email }}

{{ r.message }}

{{ r.inviteNote }}

{{ r.statusLabel }}

Add a family

Rate tier

{{ clNewError }}

That family is no longer in the list.

{{ clListNote }}

Loading…

{{ clError }}

No clients yet. Press Add a family, or Import a list to bring several over at once.

Nobody by that name.

{{ clPendingLabel }}

Showing the first 200 — search to narrow this down.

{{ clName }}

{{ clEmail }}

{{ clPhone }}

Signed up themselves

They are waiting on you. Nothing has been agreed and nothing has been billed.

Rate

{{ clRate }} {{ clTier }}

Owed

{{ clOwed }}

Not yet billed

{{ clUnbilled }}

Card on file

{{ aCardBadge }}

{{ aCardStateLine }}

{{ aCardUnknownNote }}

{{ aCardNoteHint }}

{{ aCardMsg }}

{{ aSendBaMsg }}

{{ aCardRemoveQuestion }}

{{ aCardRemoveMsg }}

Release on file

{{ clConsentLabel }}

{{ clConsentDetail }}

{{ clConsentNote }}

{{ clConsentDownloadErr }}

Billing Agreement

{{ clBaBadge }}

{{ clBaDetail }}

Portal access

Anyone listed here can sign in at /portal and see this family’s invoices, hours and documents. Adding an address here does not email anybody — “Send them an invite” is what does, and the sign-in code itself is only ever sent when they type their own address into the site.

Loading…

{{ clMembersError }}

Nobody can sign in as this family yet.

{{ clAccessWarn }}

{{ m.email }}

{{ m.meta }}

{{ m.invited }}

{{ m.inviteNote }}

{{ clInviteDone }}

{{ clInviteError }}

Release of Information

You fill it in and send it; they read it and sign it. What they sign is stored word for word.

{{ clRoiDone }}

{{ clRoiUnavailableNote }}

Student information

{{ clRoiPhoneNote }}

Records may be released from, and to

Only a ticked line is printed. An unticked district with a name typed beside it is outside what was authorised, and printing it would misstate the scope on the page a district reads.

Loading the agency list…

{{ clRoiAgenciesError }}

No agencies on the list yet. Add them under “Manage the agency list” below; the three fill-in lines and the Other blanks are always here.

{{ f.suffix }}
Other

Which records

{{ clRoiHealthNote }}

Expires on

{{ clRoiExpiryNote }}

{{ clRoiExpiryPreview }}

{{ clRoiScopeSummary }}

{{ clRoiPreviewBody }}

{{ clRoiError }}

The agency list

Loading…

{{ clAgcListError }}

Nothing on the list yet.

{{ g.name }}

{{ g.meta }}

{{ clAgcRetireNote }}

{{ clAgcError }}

Send something to sign

Paste the text you want them to agree to. They sign it in their portal, and what they signed is stored word for word.

{{ clAgrDone }}

{{ clAgrCount }}

{{ clAgrError }}

Documents from this family

{{ clUploadChip }} {{ clUploadHeadline }}

{{ clUploadDetail }}

Meetings

Everything you have confirmed with this family that is still to come. If Google did not make a video link, open a Meet yourself, paste the address in, and send it to them.

Loading…

{{ clMeetErr }}

Nothing confirmed with them yet. Requests arrive on the Inbox screen, and confirming one puts it here.

{{ m.when }}

{{ m.kind }}

{{ m.details }}

{{ m.link }}

A Google Meet address and nothing else — that is the only thing this can store.

{{ clMeetRowErr }}

{{ clMeetNote }}

Documents you’ve asked for

The family sees this list on their own Documents page, with an Upload button beside each one. Nothing is withheld from them while a request is open.

Loading…

{{ clReqError }}

Nothing asked for yet.

{{ q.label }}

{{ q.who }}

{{ q.note }}

{{ q.when }}

{{ q.chip }}

{{ clReqEditErr }}

Ask for a document

{{ clReqAddError }}

Students

Loading…

{{ clStudentsError }}

No students on this file yet.

{{ st.name }}

{{ st.meta }}

{{ st.iep }}

Ask about their file →

Editing {{ st.name }}

{{ clStuEditPreview }}

Emptying a box clears it. To move a child to a different family, unlink them here and link them from the other family’s page.

{{ clStuEditError }}

Unlinking leaves the student and their documents alone — it only takes them off this client’s file.

Add a student

{{ clAddPreview }}

{{ clAddError }}

Link a student who is already in the system

Notes about the household

For what is about the family rather than about one child — a phone call, who to ask for, what the district said. Yours only. The family never sees these.

Remove this family

Type {{ clName }} below to show the two ways of doing it. Neither happens until you press again on the step after that.

{{ clDelTitle }}

{{ clDelDetail }}

{{ clDelError }}

{{ clStuName }}

{{ clStuCountLabel }}

{{ clConsentLabel }} {{ clConsentDetail }} {{ clStuConsentNote }}

Loading their paperwork…

{{ clStuDocsError }}

Nothing is on this child’s file yet. Documents added for them will be listed here.

{{ d.title }}

{{ d.statusLabel }}

{{ d.meta }}

{{ d.detail }}

{{ d.visLabel }}

Opens in a new tab — close it to come back here.

{{ d.openError }}

This file could not be opened. It can be re-attached — get in touch and it will be put back.

Add a PDF to this file →

Opens {{ clStuName }}’s Documents tab in the Advocate Assistant, where reading a file happens.

{{ clStuShareError }}

Opening a document makes a private link that works for fifteen minutes and then stops. Nothing here is shared with anyone.

{{ npHeading }}

{{ npSubtitle }}

{{ npListHeading }}

Loading…

{{ npError }}

{{ npEmptyText }}

{{ npEditorHeading }}

{{ npTitleHint }}

{{ npEditorHint }}

{{ npSaveError }}

{{ npDeleteAsk }}

Invitations cannot go out yet

{{ gr.text }}

{{ aInvPlanLine }}

{{ aInvIntroHelp }}

{{ aInvIntroCount }}

{{ aInvPreviewNote }}

{{ aInvPreviewErr }}

{{ aInvLede }}

{{ aInvError }}

{{ aInvNote }}

Loading the list…

{{ aInvEmpty }}

Submissions {{ inboxOpenDeletionLabel }}

Showing rows from {{ inboxFilterEmail }}

Loading…

{{ inboxCapNote }}

{{ inboxErrorText }}

{{ inboxCalendarNote }}

{{ inboxMailNote }}

{{ inboxBookingsEmptyText }}

{{ row.name }} {{ row.statusLabel }}

{{ row.linkNote }}

{{ row.phoneLabel }} {{ row.phoneLabel }} · {{ row.emailLabel }} {{ row.emailLabel }}

{{ row.when }} · {{ row.kindLabel }} · {{ row.need }}

{{ row.district }} · Grade {{ row.grade }} · IEP: {{ row.iep }} · {{ row.fromPortalLabel }}

{{ row.movedLabel }}

{{ row.details }}

Join the video call ↗

You told them: {{ row.handledNote }}

{{ row.created }}

Offer them a different time. They will get the confirmation with the new time on it.

{{ row.adjustErr }}

{{ row.denyErr }}

How long should this reservation hold? Thirty minutes is what the booking page offers by default.

{{ row.lengthErr }}

Saved.

{{ row.lengthWarn }}

{{ inboxEmptyText }}

{{ row.name }}

{{ row.phoneLabel }} {{ row.phoneLabel }} · {{ row.emailLabel }} {{ row.emailLabel }}

{{ row.message }}

{{ row.created }}
{{ row.handledLabel }}

{{ inboxEmptyText }}

{{ row.name }}

{{ row.emailLabel }} {{ row.emailLabel }} · {{ row.relation }}

{{ row.details }}

{{ row.created }}
{{ row.handledLabel }}

{{ inboxEmptyText }}

{{ row.email }} {{ row.source }}
{{ row.created }}

{{ inboxEmptyText }}

{{ row.email }} {{ row.statusLabel }}

{{ row.name }}

{{ row.detail }}

{{ row.note }}

{{ row.noteError }}

{{ row.created }}

Questioned invoices

A family has asked about one of their bills, so its card charge is paused. Answer it here and the seven days start again from today.

Loading…

{{ qErr }}

Nothing has been questioned.

{{ qi.family }} {{ qi.amount }}

{{ qi.meta }}

{{ qi.note }}

{{ qi.restartHint }}

{{ qMsg }}

Family requests

A family asked to move a meeting, pay an invoice, or update the card on file. Call the family and make the change by hand, then mark it handled.

{{ rrError }}

Nothing waiting on you.

{{ req.name }} {{ req.kind }}

{{ req.date }}

{{ req.note }}

{{ req.rowError }}

Reviews from families

A family can leave a review from their portal. Nothing they write appears anywhere until you approve it here.

Loading…

{{ aRevErr }}

{{ aRevEmptyLabel }}

{{ rv.who }}

{{ rv.statusLabel }}

{{ rv.body }}

{{ rv.when }}

{{ rv.shownAs }}

{{ rv.permission }}

Approving publishes this text word-for-word on the public site. You are the only filter: check it names no child, no school, no diagnosis, and makes no legal claim.

Read these lines again before you publish

{{ h.label }} — “{{ h.context }}”

{{ aRevActionErr }}

Your calendar

{{ calConnState }}

{{ calConnNote }}

{{ calSyncNote }}

{{ calError }}

Gap between meetings

{{ calBufferNote }}

{{ calBufferDone }}

Your hours

Parents can only book inside these

Drag across the times you are happy to be booked. On a phone, tap a square. Nothing changes on the booking page until you press Save, and nothing here touches anything already booked.

{{ calGridWeekLabel }}
you are offering these hours not offered — parents cannot book here already taken that week — hover one for who it is

Loading your hours…

{{ c.label }}

{{ calGridSummary }}

{{ calGridSaved }}

{{ calGridError }}

Your month

{{ calMonthLabel }}
{{ m.dayNum }}

{{ calMonthCount }} · anything shown here is time a parent cannot book. Hover a day to read it, press a meeting to keep it open, or press an empty day to add something.

{{ calPeekTitle }}

{{ calPeekSub }}

{{ calPeekNone }}

{{ p.span }}

{{ p.rowTitle }}

{{ p.who }}

{{ p.kind }}

{{ p.phone }}

Join the video call ↗

{{ p.sourceLabel }}

{{ calPeekHint }}

The next three weeks

Blocking unless you say otherwise

Anything here takes those times off the booking page. Mark the ones you can work through — driving, admin time — and parents can book you then.

{{ calBlockDialogTitle }}

{{ calBlockDialogWhen }}

{{ calBlockDialogBlurb }}

{{ calBlockError }}

{{ calBlockDialogFoot }}

{{ calBlockDeleteError }}

Nothing on the calendar for the next three weeks. Every hour inside your windows above is bookable.

{{ e.title }}

{{ e.when }} · {{ e.span }} · {{ e.source }}

{{ e.stackLabel }}

Move the end time only. The start is the slot the family booked — to move that, use Adjust in the inbox.

{{ e.endError }}

{{ aBillSwitchTitle }}

{{ aBillSwitchState }}

{{ aBillSwitchLead }}

{{ aBillSwitchSub }}

Reminders

{{ bRemindAllNoneText }}

{{ bRemindAllQuestion }}

Each one gets the same reminder the button on its own invoice sends. Test households are never included, and nothing goes to a family who was reminded in the last twenty-four hours.

{{ bRemindAllProgress }}

{{ bRemindAllDoneText }}

{{ r.label }}

{{ r.line }}

{{ bListTitle }}

Loading…

{{ bError }}

{{ bListEmptyText }}

Nothing here matches that search.

Sort
{{ c.title }} {{ c.amount }} {{ c.meta }} {{ c.pill }} Needs review {{ c.note }}
{{ bListCount }}

{{ bInvNoneText }}

Invoice {{ bInvNumber }}

{{ bInvStatusLabel }}

{{ bInvWho }}

{{ bInvDates }}

{{ bChargeStateLine }}

{{ bQuestionNote }}

Loading the lines…

{{ bLinesError }}

What
Hours
Amount
{{ l.description }}
{{ l.hours }}
{{ l.amount }}
Total{{ bInvTotal }}
Paid{{ bInvPaid }}
Balance{{ bInvBalance }}
{{ bFlashTitle }} {{ bFlashBody }}

{{ bRemindNote }}

{{ bRemindLastLine }}

{{ bSendInvNote }}

{{ bAttemptsErr }}

Card attempts

{{ at.line }} {{ at.code }}

Delete invoice {{ bInvNumber }}?

{{ bDelDetail }}

Charge {{ bChargeCardLabel }} now?

{{ bChargeDetail }}

Void invoice {{ bInvNumber }}?

{{ bVoidDetail }}

Record a payment against {{ bInvNumber }}

How it arrived

{{ bPayError }}

Choose a family on the left to bill their hours.

{{ bCustomerName }} · unbilled hours

{{ bSelectedRateLabel }} {{ bSelectedTierLabel }}

{{ bSelectedRateReason }}

Send the Client Services Agreement to {{ bCustomerName }}

This freezes the current agreement text and sends it to their portal for review and signature. Choosing a model below is optional and can be changed later.

{{ bAgreementError }}

{{ bAgreementResultLabel }}

Edit rate

per hour

{{ bRateError }}

No unbilled hours for this family yet. Log hours below.

{{ bEditTenthWarnText }}

{{ bEditError }}

No description on this entry — the family’s invoice line would be blank. Edit to add one.

{{ h.date }} · {{ h.hours }} · {{ h.categoryLabel }}

{{ h.description }}

{{ h.removeError }}

{{ bSelectedCount }} selected · {{ bSelectedHours }} hr
Total {{ bSelectedValue }}

What the family will see

{{ line.label }} · {{ line.hours }} · {{ line.rateLabel }} {{ line.amount }}
Total {{ bSelectedValue }}

No card on file, so this creates an invoice to send instead.

Charged to the {{ bSelectedCardLabel }}.

{{ bResultMessage }}

{{ bResultMessage }}

Log hours

1. What was done

{{ bTplError }}

This sentence is the line the family sees on their invoice. The kind of work below groups it.

2. How long

{{ bTenthsHint }}

{{ bLogTenthWarnText }}

3. At what rate

$ per hour

{{ bLogRateHint }}

{{ bLogRateDiffersMessage }}

{{ bLogLineTotalText }}

{{ bLogError }}

Nothing saved yet. Save the handful of things you write out every week and they become one button each.

Saved services

Loading…

Nothing saved yet.

{{ tm.name }}

{{ tm.meta }}

Retired

{{ bTplFormTitle }}

{{ bTenthsHint }} Blank means the form asks.

{{ bTplFormError }}

Outstanding

{{ bAgingTotal }}

{{ b.label }}

{{ b.amount }}

{{ b.count }}

90+ days is collections-eligible under the signed terms. Nothing is referred automatically.

Card activity

Succeeded

{{ bChargeOkTotal }}

Failed

{{ bChargeFailTotal }}

{{ bChargeSimulatedNote }}

Bookkeeping

{{ bLedgerDescription }}

{{ bPaidTitle }}

{{ bPaidAmount }}

{{ bPaidNote }}

Bill a client

Write the lines yourself. Hours you enter here are recorded as billed, so they will not appear again under Unbilled.

Who is this for

{{ bBillMoreLabel }}

No family or child matches that.

{{ bBillFamilyName }} {{ bBillFamilyMeta }}
{{ bBillRateNote }}

Line items

Hours Rate Kind Amount {{ ln.total }}
Invoice total {{ bBillTotal }}

{{ bBillError }}

Log hours

Time recorded here stays unbilled until you bill it.

Who is this for

{{ bLogDlgMoreLabel }}

No family or child matches that.

{{ bLogDlgFamilyName }} {{ bLogDlgFamilyMeta }}

1. What was done

{{ bTplError }}

This sentence is the line the family sees on their invoice.

2. How long

{{ bTenthsHint }}

{{ bLogTenthWarnText }}

3. At what rate

$ per hour

{{ bLogRateHint }}

{{ bLogRateDiffersMessage }}

{{ bLogLineTotalText }}

{{ bLogError }}

Legal pages

{{ aLegalStatusLine }}

{{ aLegalFlashTitle }} {{ aLegalFlashBody }}

{{ aLegalResultLine }}

{{ aLegalError }}

The Billing Agreement

{{ aLegalBillingStatusLine }}

Publishing does not sign this on anyone’s behalf and does not re-send or re-prompt any family — it only freezes this exact text so “Send the Billing Agreement” (on a client’s own Documents tab) has a published version to send. Each family still signs their own copy separately, the way they always have.

{{ aLegalBillingBody }}

The Billing Agreement text could not be loaded, so it cannot be reviewed here right now.

Before publishing

{{ cf.hint }}

{{ aLegalAskAgainNote }}

Read the Terms ↗ Read the Privacy Policy ↗ Both public pages are showing a placeholder while the site’s forms are off, so there is nothing to preview from here yet.

This sets the effective date on the Terms and Privacy Policy pages to the moment you press it, and freezes this exact Billing Agreement text as the version that can be sent to a family. Nothing is overwritten — each publication is kept, and publishing does not sign or send the Billing Agreement to anyone by itself.

Publishing history

{{ lh.label }} {{ lh.when }} {{ lh.who }} — {{ lh.note }}

Billing Agreement — telling a family the terms are changing

One family at a time. The email gives them thirty days’ notice, carries the terms in full, and tells them they can ask you to stop keeping a card before the change applies.

{{ lTermsNoneNote }}

{{ lTermsErr }}

{{ lTermsEmail }}

{{ lTermsMsg }}

Old records

Records are kept for a year. Anything belonging to someone with an unpaid balance is kept until that is settled, and is deliberately not listed here.

{{ retentionError }}

Nothing is older than a year.

{{ retentionTotalLabel }} record(s) found.

{{ g.label }} ({{ g.count }})

{{ row.label }} · {{ row.email }}

{{ row.created }}

Removed {{ retentionResultTotal }} record(s): {{ retentionResultBookings }} booking(s), {{ retentionResultInquiries }} enquiry(ies), {{ retentionResultReferrals }} referral(s), {{ retentionResultWaitlist }} waitlist signup(s).

How do I…

{{ helpError }}

{{ helpAnswer }}

Answers from the console guide only. It cannot see any family's records.

{{ saSectionTitle }}

Reading the access tables…

Who can reach what

Why this matters

{{ saAccountsNote }}

{{ saAccessNotice }}

Account list: {{ saAccessAccountsErr }}

Superadmin list: {{ saAccessSupersErr }}

Model-call list: {{ saAiErr }}

Nobody to show. Give someone access below.

{{ a.email }}

You {{ a.roleText }}

{{ g.label }} {{ g.stateText }}

{{ g.help }}

{{ g.note }}

Saving…

{{ a.err }}

This lets that account spend money on model calls. Every function that talks to a model checks this list on the server, every time.

To go ahead, type this exactly, in capitals:

{{ a.phrase }}

{{ saAccessConfirmErr }}

Give someone access

Why this matters

This grants site access — the ability to sign in. It grants nothing else: model calls and superadmin are one click each on their card above, once they appear there.

Recorded, and nothing more — no policy anywhere reads this, and neither grants a single thing the other does not. It says who owns the practice.

{{ saAddErr }}

Features, per account

These decide what a signed-in person sees, and nothing else. They decide nothing about what anyone can reach: every table has its own database policy, and every function that calls a model does its own allowlist check on the server first. Turning something on here for an account that is not on the model-call list draws them a screen that then refuses to answer — which is the intended result, not a fault.

{{ saGrantsErr }}

No accounts to show yet. Give someone site access on the Access screen and they will appear here.

Showing what {{ saFeatureEmail }} can see.

{{ grp.phase }}

Saving…

{{ fr.note }}

{{ fr.err }}

No feature flags were found in this build.

{{ saModelMaster.label }} {{ saModelMaster.stateText }}

Why this matters

{{ saModelMaster.help }}

Saving…

Every function that talks to a model is refusing right now. Uploads still work and pages are still stored; only the calls that cost money are stopped.

{{ saSettingErr }}

One at a time

Why this matters

Each of these is a separate function with its own bill. Two of them run without anyone pressing a button, which is worth knowing before reading the rest of this list.

{{ w.label }} {{ w.stateText }}

{{ w.help }}

{{ w.note }}

Saving…

Ceilings

Why this matters

Counted per account and enforced in the database, not in the browser. Each of these used to be a number compiled into a function, changeable only by deploying — which is why the message a person saw when they hit one said to go and edit the function.

{{ c.hint }}

{{ c.err }}

What has been spent

Why this matters

Counts and cost, per account, against the ceilings above. The day is Pacific, matching the boundary the database counts by — so this cannot disagree with the limit somebody just hit.

Usage could not be read: {{ saUsageErr }}. Treat what is missing as unknown, not as zero.

Nothing spent this month.

{{ u.email }}

Chat · {{ u.chatToday }} today, {{ u.chatTokensMonth }} tokens this month

Documents · {{ u.docsToday }} today, {{ u.docsSpendMonth }} this month

Before this is used with a real family

Why this matters

Tick these as they are met. Nothing on this screen checks them and nothing enforces them — they are here so they have to be read, and so that what is still outstanding is written down somewhere other than a person’s memory.

{{ g.label }}

Saving…

Global settings

Test data {{ saTestState }}

Synthetic families and seeded student records. This hides them from the lists only — nothing is deleted, no row is touched, and turning it back on brings everything straight back. Applies to everyone, not just this browser.

Legal tab {{ saLegalTabState }}

Shauna’s Legal screen — the one that publishes Terms and Privacy. It puts itself away when she presses Publish, so a one-time job stops sitting in her sidebar for good. Bring it back here if the documents ever need publishing again; the next Publish puts it away once more. Hiding is cosmetic — publishing still refuses anyone who is not staff.

{{ saSettingErr }}

Deleted families

Households removed from the console. A recoverable one comes back exactly as it was, with its children, documents and signatures, until the date beside it.

Not read yet.

Reading…

{{ saDelErr }}

No family has been removed.

{{ df.name }}

{{ df.when }} {{ df.by }}

{{ df.mode }}

{{ df.purgeFail }}

{{ saDelNote }}

Billing

Whether the money screens are shown at all — the Billing section and its controls in the console, and charges, invoices, the card on file and “Amount due” in the family portal. Logging hours is unaffected. The two sites share one database, so each has its own switch.

Live site {{ saBillingLiveState }}

What Shauna and every family see. Off while invoicing happens in QuickBooks; turn it on once her Stripe bank account is linked.

{{ saBillingArmSentence }}

Preview channel {{ saBillingPreviewState }}

Seth’s build, against the Stripe sandbox. No family reaches it, so this one is safe to leave on.

{{ saBillingErr }}

Either way, this switch only decides what is on screen. Which Stripe account a card is actually charged against is decided per household on the server, from the household’s own record — not by this switch and not by the browser.

Read straight from pg_cron, pg_net and the tables themselves. Nothing here is cached.

Scheduled jobs

The three jobs pg_cron runs on its own, and how the last run went.

Reading…

Not read yet.

{{ saHCronErr }}

No scheduled job is registered. Nothing is purging diagnostics, taking removed families apart, or sending reminders.

{{ j.name }}

{{ j.activeLabel }}

{{ j.schedule }} · {{ j.last }} · {{ j.statusLabel }}

{{ j.message }}

{{ j.armSentence }}

{{ saHRunNotice }}

{{ saHRunErr }}

Mail out of the database

Booking confirmations, reminders and the notice that a family signed itself up all leave through pg_net. This is what came back.

Internal secret: {{ saHSecretLabel }}

{{ saHSecretNote }}

{{ saHMailSummary }}

{{ saHSummaryErr }}

{{ saHMailErr }}

Nothing has been sent from the database yet.

{{ m.when }}

{{ m.statusLabel }}

{{ m.url }}

{{ m.error }}

The practice right now

Five numbers, read from the tables themselves. Nobody is named.

{{ saHCountsErr }}

{{ c.label }} {{ c.value }}

Staff sessions

Worst first — the ones with refusals in them, then the most recent. Only staff accounts appear here; a family’s trail is anonymous and the database will not return it.

The account list could not be read, so there is nobody to pick from. Everyone is shown.

Reading…

Not read yet.

{{ saSErr }}

Nothing in that window.

{{ x.actor }}

Worth a look

{{ x.when }}

{{ x.counts }}

last on {{ x.lastRoute }}

{{ x.meta }}

{{ saSOpenTitle }}

Copied.

Reading…

Not read yet.

{{ saSEvErr }}

Nothing was recorded for that session.

{{ e.seq }} {{ e.at }} {{ e.gap }} {{ e.kind }} {{ e.route }} {{ e.detail }} ← stopped here

Overview

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

Loading your account…

{{ portError }}

{{ portLegalPreviewNote }}

Before your account opens

Two documents govern this account: the Terms of Service and the Privacy Policy. The Privacy Policy is the one that says what happens to your child’s records. Please read both — each opens in a new tab, and this page will wait for you.

Both documents are being finalised and are not posted on the site yet. Ask Shauna for a copy on {{ phoneDisplay }} or at {{ email }} before you accept.

{{ portLegalErr }}

{{ portLegalRecordNote }}

Not ready? Call (209) 809-3630 — Shauna would rather talk it through than have you click something you have not read.

{{ portIntakeHeading }}

{{ portIntakeLede }}

Nothing here asks about a diagnosis or which services your child receives. Shauna talks about that with you, in person.

Districts give short notice. A number Shauna can actually ring is the one thing that makes the rest of this useful.

{{ portIntakeError }}

Shauna can change any of this from her side, and so can you — just tell her. It is your child, and you are the better source.

Thanks — Shauna will be in touch

You confirmed your email and told us about your child. Nothing is agreed or billed yet. Shauna reviews new sign-ups herself and will reach out to you at {{ portProfileEmail }}; once she takes you on, your documents, bookings and billing open here.

What you told us

{{ hr.label }} {{ hr.value }}

You do not have to wait to be taken on — the first thirty minutes are free, and it is the quickest way to be heard.

Anything here can be changed — it is your child, and you are the better source. If you would rather talk, call (209) 809-3630.

Your next meeting

{{ portNextDateLabel }}

{{ portNextTime }} · {{ portNextWhat }}

Join the video call ↗

Nothing on the calendar yet — ask for a time under Book a time, or call (209) 809-3630.

Request sent — I'll confirm by phone.

{{ portRescheduleError }}

With 12 or more hours' notice, rescheduling is free. With less notice I may need to bill one hour for the time I held — I'll always talk to you first.

Amount due

{{ portAmountDue }}

Agreements

Nothing sent yet.

{{ a.label }} {{ a.statusLabel }}

Sent {{ a.sentLabel }}.

Signed {{ a.signedLabel }}.

View

{{ a.downloadError }}

Getting ready for your first meeting

A few things that help before your first meeting, if you have them.

{{ fm.label }}

{{ fm.note }}

Document Library

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

Loading your documents…

{{ docsError }}

{{ docsEmptyIcon }}

Nothing here yet

Documents will appear here as soon as Shauna shares the first one. If you were expecting to see something, please call (209) 809-3630.

Whose records

{{ docsPickerNotice }}

Each student’s records stay in their own area — nothing crosses between them, and Shauna controls what each family can see.

Add a document to {{ docsActiveName }}’s file

Shauna has asked for these

{{ dq.label }}

{{ dq.note }}

{{ dq.pressLabel }}

{{ docsReqAgainstLabel }}

{{ docsUploadIcon }}

{{ docsDropHeadline }}

or

Nothing you add here is read automatically by anything — it goes straight into {{ docsActiveName }}’s file for Shauna to see.

{{ docsUploadFileName }}

{{ docsUploadLabel }}

{{ docsUploadSummary }}

{{ up.statusLabel }} {{ up.name }} {{ up.sizeLabel }} {{ up.error }}
Added {{ docsUploadDoneTitle }} It is in the list below

{{ docsUploadError }}

Text PDFs from the school are much smaller than photographed pages, so asking them to scan is worth the one email.

{{ docsUploadBlockedTitle }}

{{ docsUploadBlockedBody }}

{{ docsActiveName }}’s file

{{ docsActiveMeta }}

{{ f.title }}

{{ f.statusLabel }}

{{ f.meta }}

{{ f.sourceLabel }}
{{ docsEmptyIcon }}

No documents yet

They’ll appear here as Shauna files them, or as soon as you add one above.

Templates

Phase 2A — not implemented. Scaffold for review. Every template and every word of the previews below is invented sample data; nothing is generated, saved or sent.

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

Her templates

{{ tplLetterhead }}

{{ tplLetterheadSub }}

{{ tplName }}

{{ tplPurpose }}

{{ tplBody }}

The chips are merge fields — they would be filled in from the student’s record so she types each of them once:

{{ fl.label }}

Generating a filled-in document is part of Phase 2A and is not implemented. Nothing was created, saved or sent.

Generate a form

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

Type the facts that repeat — the parent, the student, the district — and the form fills itself in as you go. The same four answers would carry across every document that needs them.

Enter once

The name that signs the form.

Whose records the release covers.

Who is being asked to send the file.

Printed under the signature line.

{{ genFilledLabel }}

Downloaded. It is not saved to {{ genStudentShown }}’s file automatically — add it from Documents if you’d like a copy kept there.

{{ genError }}

Completed form

{{ genLetterhead }}

{{ genLetterheadSub }}

{{ genDocTitle }}

{{ genBody }}

Signature — {{ genParentShown }}

{{ genDateShown }}

This downloads a real, letterhead-formatted PDF built from the four answers on the left.

Signatures

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

Loading your account…

{{ portError }}

Awaiting your signature

Nothing is waiting on your signature right now.

{{ a.label }}

Sent {{ a.sentLabel }}.

{{ a.baBlockedNote }}

Already signed

Nothing signed yet.

{{ a.label }} Signed

Signed {{ a.signedLabel }}.

{{ a.downloadError }}

Loading the agreement…

{{ sigDetailError }}

{{ sigDetailLabel }}

{{ sigBody }}

Authorization for Release of Information

{{ roiSentLabel }}

Your child

If anything here is wrong, fix it before you sign. It is your child — you are the better source.

{{ f.label }} {{ f.value }}

{{ roiEditedNote }}

{{ roiEditLockedNote }}

{{ roiEditError }}

Who may exchange records

Locked

No organisation is listed on this release.

  • {{ a.text }}

What may be shared

No record type is listed on this release.

  • {{ r.text }}

These two lists are what you are authorising, so they cannot be changed here. If either is wrong, call (209) 809-3630 and Shauna will send you a corrected release.

What you are signing

{{ b.label }}

{{ b.text }}

{{ roiIncompleteNote }}

{{ sigBody }}

{{ roiUnavailableNote }}

Sign the release

Sign here

{{ roiPadHint }}

{{ roiInkNote }}

{{ roiSignError }}

Your signature and the time you signed are recorded on our server, not in your browser. You may revoke this authorization in writing at any time — the Revocation paragraph above says how.

{{ sigBaNote }}

Go to your Billing page →

Sign this agreement

{{ sigSignError }}

Your signature is recorded on our server, not in your browser, and cannot be edited or withdrawn once submitted — a correction is always a new agreement.

Signed

Your drawn signature

{{ sigSignedName }}

{{ sigSignedAtLabel }}

“{{ sigSignedIntentText }}”

{{ sigSignedCopyNote }}

{{ sigDownloadError }}

Billing

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

Amount due

{{ portAmountDue }}

Last payment

{{ portLastPayment }}

{{ portLastPaymentDate }}

Hourly rate

{{ portRate }}

Billing Agreement

{{ baBlockedNote }}

Go to your documents to sign →

{{ baNoneNote }}

Opening your Billing Agreement…

{{ baErr }}

{{ baBody }}

Sign here

{{ baPadHint }}

{{ baInkNote }}

{{ baSignErr }}

Your signature is recorded on our server, not in your browser. You can ask Shauna to stop keeping a card at any time.

{{ baAcceptedLine }}

Your drawn signature

{{ baSignedName }}

{{ baDownloadErr }}

{{ baBody }}

Your card on file

{{ cardOnFileLine }}

{{ cardAddedLine }}

{{ cardNoneNote }}

{{ cardPolicySentence }}

{{ cardSetupNote }}

{{ cardAddUnavailableNote }}

Your card details go straight to our payment processor and are never stored on this site. Nothing is charged for adding a card.

Opening the secure card form…

Loading the secure card form…

{{ cardSetupErr }}

The Billing Agreement above is the step before this one — sign it and the card form will open.

{{ cardRemoveQuestion }}

{{ cardRemoveMsg }}

Your hours

No hours logged yet.

{{ h.date }} · {{ h.hours }} hr · {{ h.category }}
{{ h.hours }} hr × {{ h.rate }}
{{ h.amount }}
{{ h.description }}
Total — {{ portHoursTotal }} hr {{ portAmountTotal }}

Invoices

No invoices yet.

Invoice {{ inv.number }} · {{ inv.dateLabel }} {{ inv.statusLabel }}

{{ inv.cofCardLine }}

{{ inv.partialLine }}

{{ inv.total }}

{{ inv.downloadError }}

{{ inv.cofNote }}

{{ inv.settledNote }}

{{ inv.chargeStateLabel }}

Nothing will be charged for this invoice until Shauna has answered you.

{{ inv.questionErr }}

Thank you — Shauna will answer this before anything is charged.

{{ inv.questionedOn }}

{{ inv.questionedNote }}

{{ inv.answeredOn }}

{{ inv.answeredNote }}

{{ portCardTitle }}

{{ portCardAmount }}

Your card details go straight to our payment processor and are never stored on this site.

Opening the secure card form…

{{ portCardKeptNotice }}

{{ portCardErr }}

A reminder on the 12-hour rule: cancel or reschedule with 12 or more hours' notice and there is no charge. With less notice I may need to bill one hour for the time I held, and I'll always talk to you first.

Curious how the rest of it works?

Leave a review

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

Would you tell another parent?

Thank you — that is genuinely useful. Shauna reads every one before it goes anywhere, and she will use it exactly as you asked to be credited.

If you have another minute: putting the same words on her Google listing helps a different set of parents find her — the ones searching at eleven at night. It is in addition to the review you just left, not instead of it.

Open her Google listing →

Most families find Shauna because another family told them to. If this has helped, a few sentences here is the whole of it — no form to hunt down, no email to answer.

This is for publication. Shauna reads it first and can decline it, but anything you write here is written to be shown — so please do not put your child’s name, school or diagnosis in it.

{{ portReviewCount }}

How would you like to be credited?

{{ portReviewAttribNote }}

{{ portReviewPermissionNote }}

{{ portReviewError }}

Would rather say it privately? Call (209) 809-3630 — that is not a review and nothing published comes of it.

Book a time

{{ portRoiBannerTitle }}

{{ portRoiBannerBody }}

Thank you — your request is in Shauna's queue. She will send the new release for you to sign.

{{ portRoiRequestErr }}

See a whole week at a glance

Green is open, terracotta is not. Press an open square to fill it in below.

{{ pbWeekLabel }}
open — press to pick it not available

Loading this week…

{{ pbWeekError }}

{{ c.label }}

You picked {{ pbDateLabel }} at {{ pbTimeLabel }} — finish below.

Ask Shauna for a time

Pick a day and a time that suit you. It goes to her as a request — she confirms it by email. Times are Pacific.

{{ pbLoadError }}

{{ pbDoneText }}

You will find it below, and in your email once she has confirmed it. Nothing is held until she does.

Choose a day

{{ pbMonthLabel }}

Checking what is open…

Pick a day above and the open times will appear here. Days with nothing left are greyed out.

Choose a time on {{ pbDateLabel }} (Pacific)

Nothing is left on that day now. Please choose another.

Morning

Afternoon

How would you like to meet?

{{ pbKindNote }}

A line or two is plenty. It is what lets her read the right part of the file before you speak.

{{ pbError }}

Nothing is held until Shauna confirms. If it is urgent, call (209) 809-3630.

Your requests

Loading…

{{ pbMineError }}

You have not asked for a time yet. Anything you ask for above will be listed here with what she said.

{{ r.when }}

{{ r.statusLabel }}

{{ r.kindLabel }}

{{ r.moved }}

{{ r.details }}

Shauna said: {{ r.note }}

Join the video call ↗

Document Assistant

Phase 2B — not implemented. Scaffold for review. Every question, answer, citation and document page below is invented sample data, written out by hand, about a student who does not exist. Tapping a sample answer sends nothing. The free-text box, where enabled, posts to our own assistant service — never to a real student’s file.
{{ asstIsolationIcon }}

You’re in Mateo’s workspace — the assistant only sees documents filed for Mateo. Nothing from any other student is ever mixed in.

Switching students switches the assistant with it. That boundary would be enforced by the software rather than left to whoever is typing — the same per-student separation the document library is built on.

Ask about Mateo’s file

{{ m.text }}

{{ asstPromptLabel }}

Demo — choose a sample question above

Typing is switched off here because no model is connected to this page. The three questions and their answers are written into the file as sample text, so tapping one only reveals the next part of a conversation that was decided in advance.

Live — sample document only

{{ lm.text }}

{{ lm.noteText }}

{{ asstLiveCount }}

{{ asstLiveError }}

This answers from an invented sample file, never a real student’s records. Everything it writes is a draft for your review — it cannot cite a statute, give a deadline, or draw a conclusion about whether a school followed the rules, and the server refuses those answers even if the model tries.

{{ viewerDocName }}

{{ viewerPageLabel }} · {{ viewerSection }}

{{ viewerSection }}

{{ viewerLead }}

{{ viewerBefore }}{{ viewerHighlight }}{{ viewerAfter }}

{{ viewerTail }}

{{ viewerFooter }} {{ viewerPageLabel }}

This is a drawing of a page, not a page. Nothing is opened, fetched, downloaded or stored — the highlighted sentence is simply the one the answer above was written from, shown where it would sit in the document.

The assistant is a research aid, not a substitute for professional judgment. Every answer includes a citation precisely so it can be verified. Nothing it produces should be acted on without review.

What else it would do with the same file

{{ asstPanelTitle }}

{{ asstPanelLead }}

{{ ln.text }}

{{ ln.owner }} {{ ln.chipLabel }}

{{ asstPanelNote }}

The Terms of Service and Privacy Policy took effect on {{ aLegalEffective }}. Please read both and confirm you accept them — once, and again only if they change.

Both pages are showing a placeholder while the public forms are off, so there is nothing to open from here yet. They come back the moment the site’s doors do.

{{ aLegalSaveError }}

We record the date and which version you agreed to. Nothing else.

While the practice is being set up, only test students belong here — no real child's records are in this system yet.

Advocate Assistant

This student’s file — no one else’s

{{ p3StudentName }}

{{ p3ScopeLockedLabel }}

Archive {{ p3StudentName }}? Their file and everything in it is kept — they just stop appearing in the student list. You can restore them at any time.

{{ p3OpeningLabel }}

Whose file are we in

Loading the student list…

{{ p3StudentsError }}

Recently asked about

Everyone

{{ p3ListCount }} {{ p3ArchivedCountLabel }}

Showing the first 200 — search to narrow this down.

{{ p3StatusError }}

No students yet — add the first one below.

Nobody matches that — check the spelling, or add them.

Add a student

{{ p3NewPreview }}

{{ p3CreateError }}

Until the practice goes live, add test students here only — not a real family’s records.

Add a PDF to {{ p3StudentName }}’s file

Drag a PDF here

or

Big scans are fine — a 300-page file just takes a while. If it stops partway, add the same file again and it picks up where it left off.

{{ p3UpFileLabel }}

{{ p3UpLabel }}

Stopping keeps every finished page — nothing is thrown away.

{{ p3UpNote }}

{{ p3UpError }}

{{ p3StudentName }}’s documents

Checking the list…

{{ p3DocsError }}

Nothing here yet — the first PDF you add will appear in this list.

{{ p3FamilySummary }}

{{ p3DeleteError }}

{{ d.title }}

{{ d.metaLabel }}

{{ d.statusLabel }}

{{ d.familyOriginLabel }}

{{ d.detail }}

{{ d.reviewLabel }}

{{ d.ocrCountLabel }}

{{ d.runningLabel }}

This sends the file to the outside company that reads documents for the assistant, so it can answer questions about what’s inside.

{{ d.ingestRunningLabel }}

{{ d.ingestError }}

{{ d.ingestNote }}

{{ d.visLabel }}

Sent by the family, so it cannot be deleted here — it may be the only copy they have.

Delete this permanently? The original file, every page image and all the text taken from it are removed from the system. This cannot be undone.

{{ p3ShareError }}

{{ p3AcceptError }}

{{ p3OcrNote }}

{{ p3OcrError }}

Held back

{{ t.text }}

{{ t.text }}

{{ sp.text }}

{{ sp.text }}

  • {{ sp.text }}

{{ sp.text }}

{{ b.codeText }}

{{ td.text }}

{{ t.unreadLabel }}

{{ t.notesOnlyLabel }}

No source found for this answer — check it against the file before using it.

Where this came from

{{ t.artifactTitle }} {{ t.artifactMeta }}

Download it now — this document will not be here after a reload

Not saved — this answer will not be here after a reload

That question did not go through.

Ask anything about this file

{{ p3WelcomeLine }}

There are no documents in {{ p3StudentName }}’s file yet. You can still ask about your meeting notes, and add a document on the Documents tab when you have one.

{{ p3AttachName }}

Where should this go?

On the file, everyone working with {{ p3StudentName }} can ask about it. Just this chat, it is deleted when the chat is and the family never sees it.

{{ p3AttachLabel }}

{{ p3AttachError }}

{{ p3AskError }}

A document this conversation used has been deleted. You can still read it, but you cannot ask anything further here — start a new chat.

{{ p3PageTitle }}

{{ p3PageLabel }}{{ p3RailFromSuffix }}

Original

{{ p3PageBusyLabel }}

{{ p3PageError }}

Page text

{{ p3PageText }}

Finding the sentence on this page…

{{ p3HlMethodLabel }}

{{ p3HlMiss }}

“{{ p3HlQuote }}”

{{ p3PageTitle }} — {{ p3PageLabel }} Whole page

How do I…

{{ helpError }}

{{ helpAnswer }}

Answers from the console guide only. It cannot see any family's records.

Seth-only test harness. This page exists only while preview is active in this tab.

Staged-feature checklist

Every flag, its Shauna-facing default, and its resolved value in this tab. A flag marked staged is forced on by preview; everything else shows exactly what Shauna gets. Append ?preview=off to any URL to end preview for this tab.

FlagPhaseDefaultNowControls
{{ row.name }} staged {{ row.phase }} {{ row.defLabel }} {{ row.resLabel }} {{ row.href }}

Preview never touches sign-in: the site-wide allowlist gate and every admin data check stay exactly as Shauna would meet them. This mechanism is obscurity, not security, and is acceptable only while everything staged is invented sample data.